2010-11-04 5 views
2

если получить ввод от пользователя и я хотел найти файл для каких-либо результатов, а также отображать результаты:Поиск в текстовом файле и отображение результатов?

$searchValue = $_POST['search']; 

$handle = @fopen("home.txt","r"); 
# read line by line 
while (($buffer = fgets($handle, 4096)) !== false && // the condtion for the $searchValue) { 
    echo '<tr>'; 
     $array = explode(',', $buffer); 
    foreach($array as $val){ 
     echo '<td>'.$val.'</td>';  
     } 
    echo '</tr>';  
} 

я ДНТ получить то, что я должен делать, я просто хочу, чтобы отобразить строки в текстовый файл с Релевентом $ searchvalues ​​

+0

Вы хотите найти ключевое слово/фразу в txt-файле и отобразить строку, если есть совпадение? – Ruel

+0

yeh точно, спасибо @raul за то, что указали его – getaway

ответ

1

Я бы даже рекомендовал использовать командный файл:

array file (string $filename [, int $flags = 0 [, resource $context ]]) 

Считывает файл в каждой строке в качестве элемента массива. Оттуда вы перебирать каждую строку (вы упомянули возвращения строки в файле, который соответствовал именно поэтому я рекомендую файл (...)):

if (($fileLines = file('home.txt')) !== false) 
{ 
    foreach ($fileLines as $line) 
    { 
    if (strpos($line, $searchVal) !== false) 
    { // match found 
     echo '<tr><td>'.str_replace(',','</td><td>',trim($line)).'</td></tr>'; 
    } 
    } 
} 

Нет смысла взрывать массив просто вернуться снова. Вы также можете взорвать его, затем взорвать() его с помощью </td > <td>.

Кроме того, похоже, что в вашем файле есть строки CSV. Если это так, вы можете захотеть итерации каждой строки, а затем взорвать (...) элементы и выполнить in_array (...) (или повторить с strpos для частичных совпадений снова) на взорванную переменную. например:

$values = explode(',',$line); 
// array search (while entries) 
if (in_array($searchVal,$values)) { ... } 
// array search with partial matches 
foreach ($values as $val) { 
    if (strpos($val,$searchVal) !== false) { ... } 
} 
+0

спасибо, за сообщение +1, что вы имели в виду под командой файла – getaway

+0

Файл такой же, как fopen, fgets, fclose, но делает все работа для вас. Он берет файл и загружает массив с каждой строкой в ​​файле. Поэтому я считаю, что гораздо чище взять файл и вставить его в $ var в одну строку (хотя я никогда официально не тестировал производительность, я бы/предположим/[никогда не лучше], чтобы PHP открывал, разбирал и clsee файл, а затем сделал это сам) –

0

То, что вы ищете, strpos()

int strpos (string $haystack , mixed $needle [, int $offset = 0 ]) 

Возвращает числовую позицию первого вхождения иглы в стоге строке.

Возвращает позицию как целое число. Если игла не найдена, strpos() вернет логическое значение FALSE.

+0

wow, я действительно не понял, что – getaway

Смежные вопросы