删除 iframe 的正则表达式

Posted

技术标签:

【中文标题】删除 iframe 的正则表达式【英文标题】:Regular expression to remove an iframe 【发布时间】:2013-09-10 07:09:12 【问题描述】:

我正在尝试使用 str_replace 将所有 iframe 替换为我自己的内容。我相信我可以使用正则表达式,但不确定如何删除 iframe 标记中的所有内容。

由于我不确定如何实现这一点,以下是我一直在使用的。但它只是将“iframe”替换为什么都没有,因此当页面加载到 iframe 将加载的任何位置时,现在只会显示如果 iframe 正确解析将加载的 URL。

$toremove = str_replace("iframe", "", $toremove);

这是使用上述代码时加载的内容而不是 iframe 的示例输出。您可以看到它是整个 iframe,只是没有“iframe”这个词破坏了 iframe(这比显示它更好)

< src="http://cdn2.adexprt.com/exo_na/center.html"   frameborder="0" scrolling="no"> 

但现在我想完全删除 iframe 及其所有内容,这样我就可以将自己的内容放在它的位置,而不会显示旧的损坏代码。但我不确定如何使用正则表达式编辑我的str_replace 而不仅仅是工作“iframe”

【问题讨论】:

请在您的问题中输入完整输入和所需(替换)结果的样本。 【参考方案1】:

str_replace 不使用正则表达式。改用这个:

$str = preg_replace('/<iframe.*?>/', '', $str);

这将取代

&lt;iframe something&gt;

清空字符串

【讨论】:

这很好用,但我必须在 '// 之后添加一个 ',因为如果页面不存在,则不会加载任何内容。【参考方案2】:
<?php
$iframe='<iframe src="http://cdn2.adexprt.com/exo_na/center.html"   frameborder="0" scrolling="no">
</iframe>';
$pattern = "#<iframe[^>]+>.*?</iframe>#is";
echo preg_replace($pattern, "", $iframe);
?>

【讨论】:

这也很好用,除了上面的答案,我可以先用我自己的内容替换特定的内容,然后什么都没有替换所有其他框架。 这是此页面上唯一有效的响应。【参考方案3】:

str_replace() 不支持正则表达式。你在preg_replace()之后。您将需要一个类似于以下内容的正则表达式:

$html = preg_replace('/<iframe>.*<\/iframe>/is', '', $html);

虽然这是 HTML,但您应该避免正则表达式,而是使用 HTML 解析器。

【讨论】:

这不适用于删除 iframe。而且删除多个 iframe 肯定是行不通的。考虑以下要测试的字符串:$str = '&lt;iframe someattr="..."&gt; 1111 &lt;/iframe&gt;222&lt;iframe myattr="333"&gt;3333&lt;/iframe&gt;';【参考方案4】:

添加到最后一个答案,这是替换多个 iframe 的更有效的正则表达式。

$html = preg_replace('/(<iframe.+">)/is', '', $html);

【讨论】:

这不适用于删除 iframe。而且删除多个 iframe 肯定是行不通的。考虑以下要测试的字符串:$str = '&lt;iframe someattr="..."&gt; 1111 &lt;/iframe&gt;222&lt;iframe myattr="333"&gt;3333&lt;/iframe&gt;';

以上是关于删除 iframe 的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

怎么通过正则表达删除含中文的括号部分但保留含英文的括号部分?

使用正则表达式删除 JavaScript

正则表达式删除特殊字符

正则表达式:删除包含“帮助”等的行

如何删除添加到文本字段的正则表达式?

删除 HTML 标签的正则表达式