0

str_replace 似乎没有像我们预期的那样工作。

我们有一个文本文件,我们正在尝试删除文件的一部分。

while(!feof($bodyfile)) {

    $content = @fgets($bodyfile);

    $content = str_replace("MARGIN","",$content);

(显然 fopen 用于将文件打开为 'r') 奇怪的是,查找和替换 M 有效吗?但不是保证金..

4

3 回答 3

4

更新:

fgets()函数一次只读取 1 行,通过将该行放入$content变量中,您将覆盖前一行的替换,并一遍又一遍地执行此操作。

试试这个:

$content = "";
while(!feof($bodyfile)) {

    $line = @fgets($bodyfile);

    $content .= str_replace("MARGIN","",$line);

因此,这段代码所做的是读取该行并将其分配给$line变量,然后将替换的字符串添加到您的$content变量中。


通过在函数前面添加@符号,您可以抑制该函数给出的错误。
尝试@从您的删除@fgets,看看是否有任何错误。

尝试var_dump($content)echo $content查看文件是否正确加载。

请记住,这str_replace()是区分大小写的。

于 2012-10-09T09:09:46.763 回答
0

你可以这样做:

$str=implode("",file('somefile.txt'));
$fp=fopen('somefile.txt','w');
$str=str_replace('MARGIN','',$str);
//OR
//$str=str_ireplace('MARGIN','',$str); for case insensitivity
fwrite($fp,$str,strlen($str));
于 2012-10-09T09:19:11.017 回答
0

刚刚发现该文件是 UTF-16 字符编码而不是 UTF-8,原因不明。转换后,现在我的方法原来有效!

感谢大家的建议

于 2012-10-09T09:36:48.343 回答