поиск по текстовому файлу и отображение результатов? - PullRequest
2 голосов
/ 04 ноября 2010

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

$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 ​​

Ответы [ 2 ]

1 голос
/ 04 ноября 2010

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

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

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

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>';
    }
  }
}

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

.

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

$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 голосов
/ 04 ноября 2010

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

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

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

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

...