我有一个字符串中的 HTML。我想剥离 <head>
一部分。我使用:
$html = preg_replace("/<head[^>]*?>.*?<\/head>/s", "", $html);
但就性能而言,这可能有点沉重。有更好的选择吗?
我知道我可以使用 strip_tags()
并在第二个参数中列出所有接受的标签,但太多了,无法列出。
最佳答案
针对此 SO 页面的一部分进行测试时,您当前的正则表达式需要 6720 步。
这个正则表达式 <head[^>]*?>(?:[^<]*<??)*</head>
只需要 376 步,它应该返回同样的东西。它应该比您的正则表达式快近 20 倍。
它通过贪婪地匹配所有不是 <
的东西来工作这里:[^<]*
那么,因为<??
是懒惰的,它会尝试立即匹配 </head>
.如果没有匹配项,<??
开始。
关于php - 从特定标签中剥离字符串的最快方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36716421/