用于删除iframe的正则表达式

时间:2013-09-06 08:37:37

标签: php regex iframe str-replace

我正在尝试使用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" width="728" height="90" frameborder="0" scrolling="no"> 

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

4 个答案:

答案 0 :(得分:7)

<?php
$iframe='<iframe src="http://cdn2.adexprt.com/exo_na/center.html" width="728" height="90" frameborder="0" scrolling="no">
</iframe>';
$pattern = "#<iframe[^>]+>.*?</iframe>#is";
echo preg_replace($pattern, "", $iframe);
?>

答案 1 :(得分:2)

str_replace不使用regexp。请改用:

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

这将取代

<iframe something>

清空字符串

答案 2 :(得分:1)

str_replace()不支持正则表达式。你在preg_replace()之后。你会想要一个类似于:

的正则表达式
$html = preg_replace('/<iframe>.*<\/iframe>/is', '', $html);

虽然这是HTML,但你应该避免重新编写并使用HTML解析器。

答案 3 :(得分:0)

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

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