在PHP中应用正则表达式列表

时间:2011-05-15 22:45:40

标签: php regex

我在ignore.txt中有一长串正则表达式,在include.txt文件中有另一个长列表。使用PHP对sample.html文件中包含的数据应用这些最快的方法是什么,以便捕获include中找到的任何匹配项,但是忽略了ignore.txt中匹配的任何内容?

2 个答案:

答案 0 :(得分:1)

最快的方法是让shell完成工作

$result = `cat sample.html | egrep -f include.txt | egrep -vf ignore.txt`;

答案 1 :(得分:1)

如果你的include.txt和ignore.txt文件被设置为只有正则表达式,并且每行有一个表达式,你可以使用PHP的file()函数。这会将文件加载到一个数组中,其中每一行都是数组中的一个元素。您可以使用file_get_contents()以字符串形式加载sample.html文件。

preg_match()preg_match_all() 实际上将数组作为输入,就像preg_replace()那样。您需要使用foreach之类的方法遍历表达式数组,并对其中一个匹配函数应用单独的调用以获得结果。

我认为preg_match_all()最适合您的需求,因为听起来您想要从整个文件中提取所有匹配项,而不仅仅是第一个。获得完整的匹配列表后,就可以使用来自ignore.txt的数据以类似的方式应用过滤器。