2011-09-15 75 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如果您尋找的字符串中有0(第一個字符)的strpos如果你沒有檢查!==的類型,它會返回一個誤報。祝你好運。

0

您的問題表示您正在尋找「\ n」,但您的代碼正在尋找「La Mesa」。也許你想說

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

+0

這只是一個測試值,以查看是否可以實際比較字符串。我不能 – SoftwareSavant

+1

如果你正在搜索的字符串是從第一個字符開始的,那麼這個函數將讀取的第一個字符(0)會產生錯誤的結果,所以你必須小心strpos。如果您使用此功能,請確保添加!==運算符。 if(strpos($ line,「\ n」)!== false)。 – Adam

+0

@xandar啊,好點。將不得不記住這一點 – dispake

0

file()函數將在它默認創建的數組中保留換行符(\n)。有關更多信息,請參閱here;特別是flags部分。爲了解決您的問題...

取而代之的是:

$file = file($filename); 

使用此:

$file = file($filename, FILE_IGNORE_NEW_LINES);