Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中应用正则表达式列表_Php_Regex - Fatal编程技术网

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

在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.

我在ignore.txt文件中有一长串正则表达式,在include.txt文件中有另一长串正则表达式。使用PHP对sample.html文件中包含的数据应用这些命令的最快方法是什么?这样,在include中找到的任何匹配项都会被捕获,但在ignore.txt中找到的任何匹配项都会被排除?

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

$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解决方案,这就是我目前正在做的事情,但他想知道是否有一种聪明的方法我没有想到,而不是循环遍历每个文件中的每一行。谢谢