我的PHP代码有问题。这个循环只执行文件中的最后一个正则表达式,当我更改文件中的表达式序列而另一个表达式变为最后一个时,只执行这个新的最后一个表达式。
foreach(file('general.txt') as $line) {
$text = preg_replace("/" . $line . "/", "", $text);
}
文件general.txt包含正则表达式行,测试的所有内容。但是在这个循环中,它不再起作用了。
你可能知道为什么会这样吗?我已经尝试了很多,但没弄明白为什么......
谢谢
西蒙
答案 0 :(得分:0)
您需要按如下方式修剪线条:
foreach(file('general.txt') as $line) {
$text = preg_replace("/" . trim($line) . "/", "", $text);
}
答案 1 :(得分:0)
您可以使用删除换行符序列的file()
和fopen
,而不是使用stream_get_line
函数。为此,您必须知道模式文件中使用的换行符序列。使用Windows换行序列:
$fh = fopen('patterns.txt', 'r');
if ($fh) {
$nl = "\r\n";
while ( false !== $line = stream_get_line($fh, 2048, $nl) ) {
$str = preg_replace('/' . $line . '/', '', $str);
}
}
优于trim
的显着优势:您可以使用以空格开头或结尾的模式。