不久前,我在这里询问了如何匹配字符串中两个 Package 的<code>..</code>标记内的文本,在有人将其他HTML Package 在<code>标记内之前,它一直工作得很好。这就是我目前的做法:
<code>..</code>
<code>
preg_match_all("!<code>([^<]*)</code>!", $string, $return_array);
有人能改进这个正则表达式来解决我的问题吗?
bqf10yzr1#
这是一个我不得不同意可怕的正则表达式是邪恶的模因的例子。对于直接的提取目的,正则表达式通常是合适的。但是如果你想处理格式错误和/或嵌套的HTML,它不是一个没有重大麻烦的选择。因此,我建议在这种情况下使用phpQuery或QueryPath,也很简单:
print qp($html)->find("code")->text();
vohkndzv2#
你试过这个吗?
preg_match_all("!<code>(.*?)</code>!", $string, $return_array);
2条答案
按热度按时间bqf10yzr1#
这是一个我不得不同意可怕的正则表达式是邪恶的模因的例子。对于直接的提取目的,正则表达式通常是合适的。但是如果你想处理格式错误和/或嵌套的HTML,它不是一个没有重大麻烦的选择。
因此,我建议在这种情况下使用phpQuery或QueryPath,也很简单:
vohkndzv2#
你试过这个吗?