2012-10-04 94 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 
} 
相关问题