【问题标题】:Regex to remove a specific div and its content正则表达式删除特定的 div 及其内容
【发布时间】:2014-09-25 08:21:19
【问题描述】:

我正在使用 Wordpress automatic 插件在我的 Wordpress 网站上自动发布一些内容。这个插件使我能够使用正则表达式排除任何不需要的 html 内容,但我不知道如何使用正则表达式。我的问题是我想通过 div class 属性删除/剥离特定的 div 元素及其内容。 html内容为:

<div class="socialize-containter" style="background-color:#fffce9; border: 2px solid #ddd;">
There is content here......
</div>

你能告诉我如何删除这个 div 吗?

【问题讨论】:

  • 为什么不给要删除的内容一些标识类名,然后简单地按类删除?
  • 我不会为此任务使用正则表达式。如果您有嵌套的 div,它将不起作用。将 DOMDocument 与 XPATH 或类似的东西一起使用。您需要计算打开和关闭 div,而这不能用正则表达式完成。
  • 对不起,我误读了你的问题,没有意识到你被正则表达式困住了。这恰好是您使用正则表达式获得的最接近的值:/&lt;div[^&gt;]+class\s*=\s*"[^"]*socialize-containter[^"]*".*&lt;\/div&gt;/im。但如果你的社交容器中有另一个 div,它就会失败!

标签: php regex wordpress


【解决方案1】:

我假设“clss=...”是识别字符串。

<div class="socialize-containter".*\n.*.\n<\/div>

【讨论】:

  • 如果间距不同,此正则表达式将不起作用(您应该将所有空格替换为\s+)。如果您在类属性中有多个类,它也会失败(您应该在第一个 " 之后和最后一个 " 之前添加 [^"]*)。为什么要坚持换行符?但几乎所有正则表达式模式的最大问题是它会停在第一个 &lt;/div&gt; 如果你有嵌套的 div 可能不是正确的标签。
【解决方案2】:

下面的正则表达式将匹配div标签,并且它的内容只有当类属性的值为socialize-containter时。

(?s)<div class="socialize-containter".*?<\/div>

DEMO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多