str_replace似乎没有像我们期望的那样工作。
我们有一个文本文件,我们正在尝试删除部分文件。
while(!feof($bodyfile)) {
$content = @fgets($bodyfile);
$content = str_replace("MARGIN","",$content);
(显然fopen用于打开'r'文件) 奇怪的是,找到并取代M有效吗?但不是保证金..
答案 0 :(得分:4)
fgets()
函数当时只读取1行,并将该行放在$content
变量中,您将覆盖前一行的替换,并反复执行。< / p>
试试这个:
$content = "";
while(!feof($bodyfile)) {
$line = @fgets($bodyfile);
$content .= str_replace("MARGIN","",$line);
因此,此代码执行的操作是读取该行并将其分配给$line
变量,然后将替换后的字符串添加到$content
变量中。
在功能前添加@
符号,即表示该功能的suppressing errors。
尝试从@
中移除@fgets
,看看是否有任何错误。
尝试var_dump($content)
或echo $content
查看文件是否正确加载。
请记住,str_replace()
区分大小写。
答案 1 :(得分: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));
答案 2 :(得分:0)
刚刚发现该文件是UTF-16字符编码而不是UTF-8,原因有些模糊。已转换,现在我的方法最初有效!
感谢大家的建议