6

我正在尝试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

4 回答 4

9
<?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);
?>
于 2013-09-06T08:49:34.900 回答
2

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

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

这将取代

<iframe something>

为空字符串

于 2013-09-06T08:40:48.573 回答
1

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

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

不过,由于这是 HTML,您应该避免使用正则表达式并改用 HTML 解析器。

于 2013-09-06T08:52:02.347 回答
-1

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

$html = preg_replace('/(<iframe.+">)/is', '', $html);
于 2015-04-13T20:18:53.083 回答