<?php
$color='red';
$lines=file("new.txt");
foreach ($lines as $line) {
if($line=='<~~~>'){
if($color=='red')
echo $color='yellow';
elseif($color=='yellow')
echo $color='red';
}
else{
echo $line."<br>";
}
}
?>
文件内容:
嘿,你好吗&LT; ~~~&GT;
我很好你呢?
&LT; ~~~&GT;
我也很好。谢谢。
&LT; ~~~&GT;
输出即将来临:
嘿,你好吗&LT; ~~~&GT;
我很好你呢?
&LT; ~~~&GT;
我也很好。谢谢。
黄
答案 0 :(得分:4)
每行末尾都有一个尾随的换行符。使用trim($line)
摆脱它:
<?php
$color = 'red';
$lines = file("new.txt");
foreach ($lines as $line) {
if (trim($line) == '<~~~>') {
if ($color == 'red')
echo $color = 'yellow';
else if ($color == 'yellow')
echo $color = 'red';
echo "<br />"; // Added to keep the original format
} else {
echo $line . "<br />";
}
}
输出:
嘿,你好吗黄
我很好你呢?
红色
我也很好。谢谢。
黄
答案 1 :(得分:3)
documentation of PHP file()
function:
返回值
返回数组中的文件。数组的每个元素对应于文件中的一行,换行符仍然附加。
这意味着,除最后一行外,如果它不以新行字符结尾,则文件中的任何行都不能等于字符串'<~~~>'
。
解决方案也在同一documentation page中提供,下面有一段:
注意:强>
结果数组中的每一行都包含行结尾,除非使用
FILE_IGNORE_NEW_LINES
,因此如果您不希望行结束,则仍需要使用rtrim()
。
答案 2 :(得分:-3)
你的问题是
echo $color='yellow';
只是做
echo 'yellow'
代替。 echo'red'
也是如此表达式“$ color ='yellow'”产生一个'void'的返回值,然后由“echo”看到。所以实际上你正在做一个“回声无效”;等效。