2012-02-19 9 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($入力、$場所= 'ニューヨーク')に別のパラメータを追加しない' –

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

     } 
関連する問題