在PHP中应用正则表达式列表
我在ignore.txt文件中有一长串正则表达式,在include.txt文件中有另一长串正则表达式。使用PHP对sample.html文件中包含的数据应用这些命令的最快方法是什么?这样,在include中找到的任何匹配项都会被捕获,但在ignore.txt中找到的任何匹配项都会被排除?最快的方法是让shell完成这项工作在PHP中应用正则表达式列表,php,regex,Php,Regex,我在ignore.txt文件中有一长串正则表达式,在include.txt文件中有另一长串正则表达式。使用PHP对sample.html文件中包含的数据应用这些命令的最快方法是什么?这样,在include中找到的任何匹配项都会被捕获,但在ignore.txt中找到的任何匹配项都会被排除?最快的方法是让shell完成这项工作 $result = `cat sample.html | egrep -f include.txt | egrep -vf ignore.txt`; 如果将include.
$result = `cat sample.html | egrep -f include.txt | egrep -vf ignore.txt`;
如果将include.txt和ignore.txt文件设置为仅为正则表达式,并且每行有一个表达式,则可以使用PHP的
file()
函数。这将把文件加载到一个数组中,其中每一行都是数组中的一个元素。您可以使用file\u get\u contents()
以字符串形式加载sample.html文件
preg\u match()
或preg\u match\u all()
实际上不接受数组作为输入,就像preg\u replace()
那样。您需要使用类似于foreach
的方法在表达式数组上循环,并对其中一个匹配函数应用单个调用以获得结果
我认为
preg\u match\u all()
最适合您的需要,因为听起来您希望从整个文件中提取所有匹配项,而不仅仅是第一个。一旦有了完整的匹配列表,就可以以类似的方式使用ignore.txt中的数据应用过滤器。preg\u match和preg\u replace accept数组作为参数,以便通过它们运行表达式列表。如何将文本文件转换成数组取决于txt文件的格式。你不能真的认为这个人没有使用Windows。2.他要求提供一个PHP解决方案,这就是我目前正在做的事情,但他想知道是否有一种聪明的方法我没有想到,而不是循环遍历每个文件中的每一行。谢谢