2012-02-19 3 views
2

Прежде всего, я новичок в мире PHP. Поэтому было бы очень полезно, если бы я нашел то, что мне нужно здесь. Спасибо заранее.Как фильтровать входные данные из файла? (PHP)

У меня есть входной файл с несколькими строками, в каждой строке есть имена некоторых людей и где они живут (имена и места, разделенные краном (он может не отображаться совершенно ниже)). просто как в этом примере:

  • JhonWilliam NewYork
  • KhanFayre Бангалор
  • LuiseRamsy NewYork

так что я хотел написать функцию PHP, чтобы прочитать этот файл построчно и только печать (вывод в другой файл) люди, которые живут в NewYork

Я написал эту функцию, чтобы прочитать строку строки по строке

function process_file($input) 

{ 

    $handle = @fopen("input.txt", "r"); 

    if ($handle) { 

    while (($buffer = fgets($handle, 4096)) !== false) { 

     echo process_line(trim($buffer)); 

    } 

    fclose($handle); 

    } 

} 


process_file("input.txt"); 


?> 

мой вопрос .. Как я могу написать функцию, чтобы фильтровать текст в файле ввода? потому что я только хочу печатать людей, которые живут в NewYork

+0

Почему вы не просто добавить еще один параметр к вашей функции 'функция process_file ($ ввода, $ местонахождения = 'New York')' –

+0

вы рассмотрели сохранение данные в «input.txt» в базе данных вместо плоского файла? это сделает то, что вы описываете, очень просто. – dqhendricks

+0

fgetcsv() - полезная функция для чтения разделов, разделенных разделителями –

ответ

0

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

function process_line($str, $findme) { 
    if (strpos($str, $findme) !== false) { 
     return $str; 
    } 
} 

И

echo process_line(trim($buffer), 'NewYork'); 
0
 $handle = @fopen("input.txt", "r"); 

     if ($handle) { 

     while (($buffer = fgets($handle, 4096)) !== false) { 

      $n = explode('\t',$buffer) // $n[0] = name, $n[1] = city 
      if ($n[1] == "NewYork") { 
      echo $n[0] . "\n"; 
      } 
     } 

     fclose($handle); 

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