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