2012-02-19 35 views
2

首先,我是PHP世界的新手......所以如果我在这里找到所需的东西,我将非常感激。提前谢谢了。如何过滤来自文件的输入? (PHP)

我有一个多行输入文件,每行都有一些人名和他们居住的地方(名称和地点由水龙头分开(它可能不会完全显示在下面))。就像这个例子:

  • JhonWilliam纽约
  • KhanFayre班加罗尔
  • LuiseRamsy纽约

,所以我想写一个PHP函数来逐行读取该文件系和只有打印(输出到另一个文件)住在纽约的人

我写了这个函数来逐行读取文件

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"); 


?> 

我的问题是...... 如何编写一个函数来过滤输入文件中的文本?因为我只想打印住纽约市的人

+0

你为什么不只是添加其他参数的函数'功能process_file($输入,$位置= '纽约')' – 2012-02-19 08:08:30

+0

你有没有考虑保持数据库中的“input.txt”中的数据而不是平面文件?这会使你所描述的非常简单。 – dqhendricks 2012-02-19 08:20:08

+0

fgetcsv()是读取制表符分隔文件的有用函数函数 – 2012-02-19 09:26:11

回答

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); 

     } 
相关问题