我正在尝试使用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”
答案 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);