.*?/s", "", $html); 但就性能而言,这可能有点沉重。有更好的选择吗? -6ren">
gpt4 book ai didi

php - 从特定标签中剥离字符串的最快方法是什么

转载 作者:搜寻专家 更新时间:2023-10-31 21:53:24 25 4
gpt4 key购买 nike

我有一个字符串中的 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/

25 4 0