2012-10-04 128 views
1

我有一個看起來像這樣的文件。PHP從文本文件中刪除包含字符串的行

Kate 
Johnny 
Bill 
Kermit 

我希望能夠把,例如,「條例」爲一個字符串,並刪除「條例」,或什麼是變量,而隨後的「\ r \ n」從文件。該變量將始終包含文件中已有的內容,如果沒有George,則不會有「George」。
此代碼檢查「Bill」是否在文件中。

$fileContents = file_get_contents("names.txt"); 
if(strpos($fileContents, "Bill")) 
{ 
    //Bill is here! 
} 

我該如何擴展刪除「Bill \ r \ n」?提前致謝!

+0

'strpos()'可以返回一個'0'如果位置的第一字符該行,所以你的'if'語句失敗。試試'if(strpos($ fileContents,「Bill」)!== false){'改爲。 – newfurniturey

+0

你的意思是你想刪除'Bill'這一行嗎? – xdazz

+0

它的一個新行char whay你想刪除? –

回答

2
$var = "Bill"; 
$input = "Kate 
Johnny 
Bill 
Kermit"; 

$output = str_replace($var ."\r\n", "", $input ."\r\n"); 
+0

如果我只是做了'$ output = str_replace($ var。「\ r \ n「,」「,$ input);'似乎沒有發生,但是當我做了'$ output = str_replace($ var。」\ r \ n「,」「,$ input。」\ r \ n「); ',它留下了一條空行。我添加了'$ newFile = substr($ newFile,0,-2); //刪除換行符,現在它完美地工作。謝謝! – Andrey

+0

啊,很好。您也可以執行trim()來刪除任何尾隨和前導空格。我附加了一個額外的\ r \ n,因此它不會無法刪除最後一行。 –

+0

我會用修剪來替換它,以防萬一。這似乎是一個更好的選擇。 – Andrey

0
while(!feof($file)){ 
    $stringData = fgets($file);//read a line on every itration 

if (strpos($stringData , "Bill") !== false) { 
//do somting 
} 

} 
1
  • 您可以使用trim刪除所有空格
  • file可以閱讀所有內容陣列
  • 您可以使用array_map申請修剪到所有陣列內容
  • 你可以用in_array來檢查一個數組的元素

實施例

$fileContents = array_map("trim",file("hi.test")); 
var_dump($fileContents); 

輸出

array 
    0 => string 'Kate' (length=4) 
    1 => string 'Johnny' (length=6) 
    2 => string 'Bill' (length=4) 
    3 => string 'Kermit' (length=6) 

要檢查是否比爾是有

if(in_array("Bill", $fileContents)) 
{ 
    //Bill is here 
} 
相關問題