2011-09-15 25 views
0

私は地球上で最も大きな愚か者のように感じます。しかし、私はテキストファイルをループして、各行を比較し、改行を見つけようとしています...あなたは知っています... "\ n"。しかし、私は文字列を比較することはできません! ここに私がやっていることがあります。PHPの文字列比較

$filename = 'StatesCities.txt'; 
$file = file($filename); 
$matchedLines = array(); 

foreach($file as $line) {  
    $matchesLines[] = $line; 
    if(strcmp($line, "La Mesa") == 0) 
    { 
     echo("Yeah"); 
    } 
    echo($line); 
    echo("<br />"); 
} 
+2

をライントリム。 –

+0

$ matchesLines [] = $ line; - >この行で何をしたいですか? – LotusH

+0

その行は、後で追加する予定の機能用です。 – SoftwareSavant

答えて

0

改行を削除しようとしていますか?そうであれば、それらを爆発させることができます。

$file = file_get_contents($file_path); 
$page = explode("\n", $file); 
//Now they're gone 

foreach($page as $line) 
{ 
    if(strpos($line, 'searchfor') !== false) 
    { 
    //do this 
    } 
} 

strposは、私は通常は使用していることを確認し、文字列で検索する方法です!==あなたが探して文字列は0(最初の文字)のstrposを持っている場合は偽偽または0でないかどうかをチェック!==でタイプをチェックしないと、偽陽性を返します。がんばろう。

0

"\ n"を探していますが、あなたのコードは "La Mesa"を探しています。おそらくあなたは言いたいと言いました

if (strpos($line, "\n")) 

+0

これは実際に文字列を比較できるかどうかを確認するためのテスト値でした。これはできません – SoftwareSavant

+1

検索する文字列が最初の文字から始まる場合はstrposに注意しなければなりません。この関数は(0)が間違った結果をもたらす場合に読み込みます。この関数を使用する場合は、!==演算子を必ず追加してください。 if(strpos($ line、 "\ n")!== false)。 – Adam

+0

@xandarああ、良い点。それを覚えておく必要があります – dispake

0

関数file()は、デフォルトで作成する配列に改行文字(\n)を保持します。詳細については、hereを参照してください。特に、flagsセクション。この代わりに...

をあなたの問題を解決するには、次の

$file = file($filename); 

は、この使用します。最初の($ラインを)トリム:

$file = file($filename, FILE_IGNORE_NEW_LINES);