【发布时间】:2011-02-19 14:05:14
【问题描述】:
大家好, 我是一个正则表达式菜鸟, 是否可以使用 preg_replace 删除整个段落标签?
<p><div class="vidwrapper"> lot of content with oder divs etc. </div><p>
只有在 div 之后的段落具有 .vidwrapper 类时,才应删除该段落。
这可能吗?知道这个正则表达式的样子吗? 感谢您的帮助。
【问题讨论】:
-
你可以用正则表达式做到这一点,但总会有你无法处理的极端情况(至少,不在“合理”范围内)。在正则表达式可能阻塞的地方使用以下字符串:
<p><div class="vidwrapper"> <!-- </p> --> lot of content with oder divs etc.</div><p>。尝试使用一个(或多个)正则表达式(-es)来修复这些小问题很可能会导致一个可怕的、容易出错且难以维护的解决方案。 -
里面永远不会有另一个
!这个 div 内部的结构总是相同的!里面只有其他 div 和一个
-
不应该是这样的吗:
$para = "/<p><div class='vidwrapper'>(.*?)<\/div><\/p>/smix"; -
如果我能理解您要做什么,我可以为您编写正则表达式。你能举一些之前和之后的具体例子吗?
-
嗯,这很简单!我有一个复杂的自定义 html,其中包括一个带有 swfobject 的 youtube 播放器。这个复杂的 html 在我博客的每篇文章中都是一样的,并且总是包含在这个
<p><div class="vidwrapper>...中。然而,当谈到 RSS 费用时,我不希望这个 youtube 视频可见,而且它周围的 vidwrapper 也没有任何意义。所以我实际上要做的就是在每个 RSS 项目中去掉这个<p><div class="vidwrapper>...。我发现一个已经是一个正则表达式,它会删除其中的脚本标签(swf-object javascript)并且效果很好!
标签: php regex preg-replace html-parsing