str_replace 似乎没有像我们预期的那样工作。
我们有一个文本文件,我们正在尝试删除文件的一部分。
while(!feof($bodyfile)) {
$content = @fgets($bodyfile);
$content = str_replace("MARGIN","",$content);
(显然 fopen 用于将文件打开为 'r') 奇怪的是,查找和替换 M 有效吗?但不是保证金..
str_replace 似乎没有像我们预期的那样工作。
我们有一个文本文件,我们正在尝试删除文件的一部分。
while(!feof($bodyfile)) {
$content = @fgets($bodyfile);
$content = str_replace("MARGIN","",$content);
(显然 fopen 用于将文件打开为 'r') 奇怪的是,查找和替换 M 有效吗?但不是保证金..
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()
是区分大小写的。
你可以这样做:
$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));
刚刚发现该文件是 UTF-16 字符编码而不是 UTF-8,原因不明。转换后,现在我的方法原来有效!
感谢大家的建议