2013-09-06 2 views
2

Я пытаюсь использовать str_replace, чтобы заменить все фреймы моим собственным контентом. Я считаю, что могу использовать регулярное выражение, но не совсем уверен, как удалить весь контент в теге iframe.Регулярное выражение для удаления iframe

Поскольку я не совсем уверен, как этого добиться, ниже я использую то, что я использовал. Но это заменяет «iframe» ничем, поэтому, когда страница загружается в любом месте, где загружается iframe, просто отображается URL-адрес, который был бы загружен, если iframe должен был правильно разобрать.

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

Ниже приведен пример вывода загружаемого файла вместо 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

Пожалуйста, введите в свой вопрос образец полного ввода и желаемого (замененного) результата. –

ответ

6
<?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); 
?> 
+0

Это отлично работает, в дополнение к вышеприведенному ответу я могу заменить конкретный контент своим собственным контентом, а затем заменить все остальные кадры ничем. – Analog

2

str_replace не использует регулярные выражения. Используйте вместо этого:

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

Это заменит

<iframe something>

пустая строка

+1

Это сработало отлично, но мне пришлось добавить 'after'/ /, потому что страница ничего не загружала, если ее там не было. – Analog

1

str_replace() не поддерживает регулярные выражения. Вы после preg_replace(). Вы хотите, регулярное выражение подобное:

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

Хотя, как это HTML вы должны избегать regexing и использовать HTML-парсер вместо этого.

0

Добавление к последнему ответу является более эффективным регулярным выражением для замены нескольких фреймов.

$html = preg_replace('/(<iframe.+">)/is', '', $html); 
Смежные вопросы