【问题标题】:php/regex - remove single tagsphp/regex - 删除单个标签
【发布时间】:2014-04-15 07:10:12
【问题描述】:

我想导出一些在我的文本中没有意义的单个标签(从 MS Word 中导出),例如:

<b stuff /> and <i stuff />. 

我尝试了以下正则表达式:

/<b(.*?)\/>/i

但是当我有类似的东西时它不起作用:

<i>My text</i> some other text<i class="stuff" /> my final text.

它不是只获取单个标签,而是获取所有内容。请问我该如何解决这个问题?最终结果必须是:

<i>My text</i> some other text my final text.

更新: aelor 的答案是最接近我需要的答案。最后,我混合了 aelor 和 Mikhail 的答案来得到这个:

/(\s?)<[ib][^>]+\/>(\s?)/

谢谢!

【问题讨论】:

  • /&lt;(b|i) (.*?)\/&gt;/i 匹配bi。我会在后面添加一个空格以防止删除其他标签。
  • .*? 是惰性的,会尽可能少地匹配。它也是“将任何字符从零匹配到无穷大”,因此您的正则表达式匹配也包括第一个标签。 .+? 是懒惰的“1 到无穷大”搜索。 [^&gt;]+ 的意思是“任何不是 &gt; 匹配 1 到无穷次的字符”更有用且性能更好。

标签: php html regex tags preg-replace


【解决方案1】:

搜索&lt;[^&gt;]+\/&gt;

然后什么都不替换。

在这里演示:http://regex101.com/r/xV4xX8

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-11
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    相关资源
    最近更新 更多