【问题标题】:Remove unmatched HTML tags in a string删除字符串中不匹配的 HTML 标签
【发布时间】:2011-02-04 12:42:36
【问题描述】:

Folks 有没有人知道 PHP 函数可以从字符串中删除不匹配的 HTML 标记。例如<div> This is a string <b> with an unmatched bold tag </div>。如果没有,那么帮我建立一个,也许我可以有一个计算开始标签和匹配结束标签数量的功能。如果它们甚至都没有,则删除第一个开始标签,或者如果结束标签更多,则删除最后一个标签?

【问题讨论】:

    标签: php regex


    【解决方案1】:

    如果不遵守某种规则结构,这是不太可行的。如果您想遵循标准(即,没有 </b> 突破包含块),您可以使用正则表达式进行前瞻,以验证在找到 </div> 之前找到了 </b>

    http://www.regular-expressions.info/lookaround.html

    【讨论】:

    • 为了上帝的爱。 不要使用正则表达式来解析 HTML! stackoverflow.com/questions/1732348/…
    • @Vivin 我希望人们不要再引用它了。严重地。在这种情况下,OP 正在尝试处理格式错误的 HTML。解析器不会在那里提供帮助。
    • 确实如此。我不完全确定为什么有人会相信这行不通,或者在某种程度上是个坏主意。而且,Vivin,您认为您宝贵的“整洁”究竟是用什么来清理 HTML 的?我保证不是str_replace()
    • 我之所以这么说是因为使用正则表达式操作 HTML(我应该说 manipulate 而不是 parse)不是一个可靠的解决方案。当然,它在某些情况下有效,但它不是您想要依赖的东西。很脆弱。我不确定str_replace() 与此有什么关系。我很清楚 tidy 不会使用它。对不起,如果我表现得粗鲁。那不是我的本意! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 2015-06-17
    • 2011-06-20
    • 1970-01-01
    • 2021-02-05
    相关资源
    最近更新 更多