Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.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 正则表达式匹配围绕HTML的HTML_Php_Html_Regex_String - Fatal编程技术网

Php 正则表达式匹配围绕HTML的HTML

Php 正则表达式匹配围绕HTML的HTML,php,html,regex,string,Php,Html,Regex,String,不久前,我在这里问过关于匹配字符串中两个包装的标记中的文本的问题。在有人在标记中包装了其他HTML之前,它一直工作得很好 到目前为止,我就是这样做的: preg_match_all("!<code>([^<]*)</code>!", $string, $return_array); 你试过这个吗 preg_match_all("!<code>(.*?)</code>!", $string, $return_array); 你试过这个吗 p

不久前,我在这里问过关于匹配字符串中两个包装的
标记中的文本的问题。在有人在
标记中包装了其他HTML之前,它一直工作得很好

到目前为止,我就是这样做的:

preg_match_all("!<code>([^<]*)</code>!", $string, $return_array);
你试过这个吗

preg_match_all("!<code>(.*?)</code>!", $string, $return_array);
你试过这个吗

preg_match_all("!<code>(.*?)</code>!", $string, $return_array);

在这种情况下,我不得不同意可怕的正则表达式是邪恶的模因。对于直接的提取目的,正则表达式通常是合适的。但是,如果你想处理格式错误或嵌套的HTML,这不是一个不需要大惊小怪的选项

因此,我建议在这种情况下使用phpQuery。它也非常简单:

print qp($html)->find("code")->text();

在这种情况下,我不得不同意可怕的正则表达式是邪恶的模因。对于直接的提取目的,正则表达式通常是合适的。但是,如果你想处理格式错误或嵌套的HTML,这不是一个不需要大惊小怪的选项

因此,我建议在这种情况下使用phpQuery。它也非常简单:

print qp($html)->find("code")->text();

不要使用正则表达式来解析HTML。句号。使用合适的HTML解析器。我会第一个说-使用解析器。你永远不会考虑人们可以放在那里的所有内容。如果你允许HTML,任何正则表达式都不行。@cdhowie You best me to it…@cohowie和naugtur,一些正则表达式方言允许所谓的平衡组,实际上允许合适的HTML或XML解析需要一些努力。但是PHP风格没有,因此您的注释在本例中是正确的。您无法解析[X]带正则表达式的HTML:不要使用正则表达式来解析HTML。句号。使用合适的HTML解析器。我会第一个说-使用解析器。你永远不会解释人们可以在那里放置的所有东西。如果你允许HTML,没有正则表达式可以做。@cdhowie你比我做得更好…@cohowie和naugtur,一些正则表达式方言允许所谓的平衡组,实际上允许pr需要一些努力才能操作HTML或XML解析。但是PHP风格没有,因此您的注释在本例中是正确的。您不能使用正则表达式解析[X]HTML: