Страница 1 из 1
RegEx
Добавлено: 16 фев 2005, 14:34
Zvepr
Мне может кто-нибудь, глупому, растолковать, НА КОЙ ЭТИ RegExы, если они по разному работают???
Задача стандартная: удалить из текста все теги. Пусть даже в тексте есть не тэг, например "<хахаха>" - его тож можно убить, не жалко... Но что б оно только работало!
Значит теслил под linux-apache-ем все замечательно работало при таком вот раскладе:
$res=ereg_replace('<.*>', '', $text);
под виндовым апачем такое дело убивает весть текст (потому что в конце текста тоже тэг). Впрочем и на хостинге с тоже.
ТАК ВОТ КАК СДЕЛАТЬ ТО, ЧТОБ УБИТЬ ВСЕ ТЭГИ???!!!
пробывал уже "одно или ноль повторения" ? - везде повтыкал, и ^ и $ и все это компоновал... и мля ниче все равно не работет везде!!!
....спасибо заранее
Добавлено: 16 фев 2005, 16:18
UUU
А вот почитать о регехспах слабо* конструкция <.*> означает все, между первым < и последним >
Т.е. должна убить все.
Вот, что пишет perldoc -q html
Here's one "simple-minded" approach, that works for most files:
#!/usr/bin/perl -p0777
s/<(?:[^>'"]*|(['"]).*?\1)*>//gs
Добавлено: 16 фев 2005, 16:38
Absurd
AFAIK есть два вида регекспов - ДКА (детерминированный конечный автомат) и НКА (недетерминированный конечный автомат)
ДКА идет циклом по регекспу, и параллельно отмечает соответствие/несоответствие текста регекспу.
НКА наоборот идет циклом по строке, и смотрит в регексп.
Первый очень стабильно быстрый, но второй предоставляет кучу фичей типа нежадного поиска, обратных ссылок etc.
PHP имеет оба типа регекспов - первый через семейство функций ereg*, второй через preg*.
Поскольку ereg* - это ДКА, то опция нежадного поиска в нем не предуспотрена.
Пользуйся preg_ - там можно написать .*?
Добавлено: 16 фев 2005, 17:52
Zvepr
UUU писал(а):А вот почитать о регехспах слабо* конструкция <.*> означает все, между первым < и последним >
Т.е. должна убить все.
Вот, что пишет perldoc -q html
Here's one "simple-minded" approach, that works for most files:
#!/usr/bin/perl -p0777
s/<(?:[^>'"]*|(['"]).*?\1)*>//gs
Ну о регеехспах почиатать не слабо... было бы где?! На русском ниче толкового не нашел. может плохо искал. Конечно можно, найти на английском, но честно говоря, это не та тема, которую можно учить почти с нуля на английском, как говориться "БЕЗ Б", по крайней мере для меня. Не дорос я еще до этого уровня, но стремлюсь. тем более, время меня поджимает. поэтому и решил сюда обратиться.
по поводу <.*> - я понял что убивает ОТ и ДО. я говорил, что и по другому пробывал. читайте выше.
спасибо, конечно за пример, но мне бы желательно ПХП, потмоу что в перле я дуб-дубом, впрочем как и в регексах. Не прошу вылоджить код, просто поясните че и как оно работает. потому что кроме . * \1 я ниче не понял...
Добавлено: 19 фев 2005, 08:52
AiK
На русском ниче толкового не нашел
Издательство O'Reilly. Книга Mastering Regular Expressions. Перевод делали как минимум в издательстве
Питер
Добавлено: 19 фев 2005, 12:56
Zvepr
мгм, спасибо, но strip_tags мне все таки больше понравилось )))