Регулярное выражение для удаления тегов с src=

lunux

Новичок
Регулярное выражение для удаления тегов с src=

Привет Гуру's и All's
Тема такая, надо кильнуть все теги содержащие атрибут src="..", при этом надо учесть что есть теги с закрывающимся тегом </ ... >, а есть и без него.
 

vladax

Новичок
Да ладно. Сегодня праздник. Пусть порадуется :)

$text = preg_replace('/<[^>]+src\s*=(\'|").*\\1.*>(.*<\/[^>]+>|)/Usi', '', $text);

lunux, написал, но не проверял. Проверишь сам!
 

SiMM

Новичок
<...src="asd">Об<b>лом</b>чик</...>
Вобщем, пущай сам разбирается ;)
 

vladax

Новичок
опа! лажанул в одном месте!
в два рега надо делать ИМХО! В каких там у нас есть src? IMG и кажется SCRIPT.

lunux
Копи-пэйст не выйдет! Я поторопился! :)
 

lunux

Новичок
Я скорей сопьюсь чем разберусь в регах. Чтоли перенести в раздел начинающих.
 

vladax

Новичок
lunux
Зачем же спиваться? Надо просто в мой рег засунуть условие, которое я по невнимательности упустил из вида, и в которое нас с тобой ткнул SIMM.

|<([a-zA-Z]+)\s*src\s*=\s*('|").*\2.*>(.*<\/\1>|)|Usi

А вообще, все таки попробуй вкурить эту сскулку PHP FAQ: Регулярные выражения и написать для начала 2 простых рега.
 

SiMM

Новичок
Автор оригинала: vladax
|<([a-zA-Z]+)\s*src\s*=\s*('|").*\2.*>(.*<\/\1>|)|Usi
Так он никогда ничему не научится (не думаю, что он осознаёт смысл твоих манипуляций). И даже больше - никогда не будет стремиться к этому (дабы не спиться). А зачем? Пришёл на форум, спросил, тебе на шару всё сделали. Кстати, ещё раз "ткну" ;)
<img border="0" src="asd">
 

vladax

Новичок
SiMM
Блин.. Нажал на редактирование своего поста, чтобы исправить эту мелкую оплошность :), а тут уже твое "ещё раз ткну". Но это уж точно оставим lunux-у на закуску, чтобы жисть малиной не казалась :)

lunux
При составлении регов надо быть очень внимательным :)
Есть ещё особенность - если их постоянно не практиковать, начинаешь иногда подзабывать некоторые вещи, а чаще просто становиться жертвой невнимательности :)
 

Vasya

Guest
Можно я встряну? :)
PHP:
<pre><?
$z = "before <img src=> after
before <img width='100' src='/qweqwe/qwe'> after
before <img width='100'> src after
before <script language=\"Javascript\" src=\"/qweqwe/qwe\"> to remove </script> after
before <script language=\"Javascript\" src=\"/qweqwe/qwe\"> to remove </script> <script></script>after
";
$a = split("\n", $z);
foreach($a as $s) {
	echo htmlspecialchars(preg_replace("!<(\w+)[^>]+src\s*=[^>]*>(?:.*?</\\1>)?!is", "", $s))."\n";
}
?></pre>
Пробел перед закрывающей круглой скобкой </\\1> )?! -- это глюк! Нет его там на самом деле...
 
Сверху