【发布时间】:2016-06-24 10:29:12
【问题描述】:
我正在寻找使用单个正则表达式来查找 2 多种标签。我在另一个关于这个主题的问题中发现,它使用 | 来制作 (p|h1|table) 外观语法,它似乎对我不起作用。
我原来只查找 iframe 的模式
$removeiframe = preg_replace("#<iframe[^>]+>.*?</iframe>#is", "", $descriptiontext);
我尝试使用的模式:
$removeiframe = preg_replace("#<(iframe|img)[^>]+>.*?</(iframe|img)>#is", "", $descriptiontext);
我目前得到的最后一个模式的响应:
如果文本包含单个 iframe,则返回。
如果文本包含多个 iframe,则返回 this
[
[0] => '<iframe></iframe>'
[1] => '<img></img><iframe></iframe>'
]
以及我想要得到的东西
[
[0] => '<iframe></iframe>',
[1] => '<img></img>',
[2] => '<iframe></iframe>',
]
【问题讨论】:
-
正则表达式不是处理 HTML 或 XML 文档的好方法。改用 XML 解析器(DOMDocument)
-
使用反向引用
(\\1)而不是第二个替代列表。 -
嘿@MaximKrizhanovsky 我完全忘了写我是如何使用它的。这用作描述字段,而您可以粘贴到 iframe 中,它会自动从文本中挑选出来并将其放置在其他地方。整个字段是一个文本区域。这仍然可以使用 DOMDocument 吗?
-
@mario 你的建议也没有奏效,结果根本没有找到任何东西..
-
@Kjaal 是的,您可以从字符串加载 HTML 并使用 DOM 操作遍历节点。
标签: php iframe expression preg-match-all