foreach中的Preg_replace无法正常工作

时间:2017-03-20 09:49:27

标签: php foreach preg-replace

我的PHP代码有问题。这个循环只执行文件中的最后一个正则表达式,当我更改文件中的表达式序列而另一个表达式变为最后一个时,只执行这个新的最后一个表达式。

foreach(file('general.txt') as $line) {
    $text = preg_replace("/" . $line . "/", "", $text);
}

文件general.txt包含正则表达式行,测试的所有内容。但是在这个循环中,它不再起作用了。

你可能知道为什么会这样吗?我已经尝试了很多,但没弄明白为什么......

谢谢

西蒙

2 个答案:

答案 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的显着优势:您可以使用以空格开头或结尾的模式。