[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Разобрать шаблон поиска всех тэгов
Эдик
Здравсивуйте. Понадобилось находить и удалять все теги из текста.
Нашел на просторах такой вот шаблон
$pattern=  "'<[\/\!]*?[^<>]*? >'si";

Более-менее понятно, но непонятна именно эта часть
[\/\!]
-За что именно она отвечает?
И еще проблема, не работает для тегов типа
< html>

Те с пробелом между < и самим тегом.
Но это фиг с ним, нужно разобраться с блоком



Спустя 1 минута, 39 секунд (25.01.2012 - 22:11) Winston написал(а):
strip_tags() и никаких регулярок не надо.

Спустя 1 минута, 36 секунд (25.01.2012 - 22:13) Winston написал(а):
Цитата (Эдик @ 25.01.2012 - 21:09)
[\/\!]

Это значит, что между символами < > могут встречаться символы / и !

Спустя 36 секунд (25.01.2012 - 22:13) Эдик написал(а):
Winston, мне нужно именно регулярку написать =) Для опыта ну и вообще

Спустя 19 секунд (25.01.2012 - 22:14) Winston написал(а):
$pattern=  "'<[/! ]*[^<>]*>'siU";

Спустя 2 минуты, 27 секунд (25.01.2012 - 22:16) Эдик написал(а):
Winston, спасибо, но почему-то в такой строке
$string="<    br  ></br > < html>< head >OLOLO< / head ></html> < html ></br> 5<<3 и 6>5 fdfgdfgdfgfdgfdg";

Она бессильна для </html> и </br>
Так погоди, а почему там стоит одинарный слеш, а не 2-й? Вроде 2 слеша щаменяются на 1?

Спустя 1 минута, 54 секунды (25.01.2012 - 22:18) Winston написал(а):
$str = '$string="<    br  ></br > < html>< head >OLOLO< / head ></html> < html ></br> 5<<3 и 6>5 fdfgdfgdfgfdgfdg";';
echo preg_replace('#<[^>]+>#sU', '', $str);

Спустя 6 минут, 4 секунды (25.01.2012 - 22:24) Эдик написал(а):
5<<3 и 6>5
Вот это обрабатывает не так, как надо

Спустя 17 минут, 7 секунд (25.01.2012 - 22:41) Winston написал(а):
Цитата (Эдик @ 25.01.2012 - 21:24)
Вот это обрабатывает не так, как надо

Вырезать не должен?

Спустя 2 минуты, 9 секунд (25.01.2012 - 22:43) Эдик написал(а):
Ну это типа как больше-меньше, он не должен брать это как тег.
Но вроде я понял, что это невозможно

Спустя 1 минута, 33 секунды (25.01.2012 - 22:45) killer8080 написал(а):
Эдик
а с чего ты взял что в теге может быть пробел между "<" и названием тега?

Спустя 1 минута, 8 секунд (25.01.2012 - 22:46) Эдик написал(а):
killer8080, ну я просто предположил, что так может быть.
я встречал написание тега
< /br>



Спустя 2 минуты, 6 секунд (25.01.2012 - 22:48) killer8080 написал(а):
Цитата (Эдик @ 25.01.2012 - 21:46)
я встречал написание тега
< /br>

Браузер эту хрень тегом не признает wink.gif

Спустя 2 минуты, 39 секунд (25.01.2012 - 22:51) Эдик написал(а):
killer8080, блин, точно, а чего я тогда парюсь smile.gif
Спасибо, вроде понял.
Но все равно открыт вопрос об 5<6 и 4>3

Спустя 7 минут, 41 секунда (25.01.2012 - 22:58) Лена написал(а):
взяла пример Winston, добавила проверку с "заглядыванием назад":

$str = '<br ></br > < html>< head >OLOLO< / head ></html> < html ></br> 5<<3 и 6>5 fdfgdfgdfgfdgfdg5<<3 и 6>5';
echo preg_replace('#<(?<!<)[^>]+>#sU', '', $str);

Спустя 6 минут, 30 секунд (25.01.2012 - 23:05) Эдик написал(а):
Лена? теряет смысл, он вообще теги не режет, тк ты убрала самую суть поиска тегов.
вот самый норма вариант, который у меня получился
$pattern=  "'<[\\/!]?[a-z0-9]+>'iU";


Спустя 1 минута, 38 секунд (25.01.2012 - 23:06) Winston написал(а):
Короче изврат
#<+\s*/*\s*([a-z][a-z\d]*)\b[^>]*/*\s*>+#isU

Проще strip_tags

Спустя 5 минут, 16 секунд (25.01.2012 - 23:12) killer8080 написал(а):
ещё один изврат
$t = 'text <a href="#">
link
5<2
</a> text 5<2>4
<h1 class="abc"> header </h1 >
<img src="yy"> afetr picture'
;

$t = preg_replace('#(?:<([a-z][a-z\d]*)[^>]*>(.*)(</\\1[ ]*>))|(?:<([a-z][a-z\d]*)[^>]*>)#isU', '$2', $t);

echo '<pre>'.htmlspecialchars($t).'</pre>';

Спустя 18 минут, 25 секунд (25.01.2012 - 23:30) Лена написал(а):
не попробовала сначала, теперь попробовала:

$str = '<br ></br > < html>< head >OLOLO< / head ></html> < html ></br> 5<<3 и 6>5 fdfgdfgdfgfdgfdg5<<3 и 6>5';
echo preg_replace('#(?<!<)<[^<>]+>#sU', '', $str);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.