[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: регулярные выражения
nvrskozzy
У меня тут с регуляркой проблема) Помогите)

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

PHP
$contentpages preg_replace("/(http:.* )/i"""$contentpages);


расчитывая что он удалит всё начиная с http и заканчивая первым пробелом.. но видимо он удаляет всё.. похоже что он удаляет всё между http и последним пробелом! а как сделать чтоб между http и первым! пробелом?



Спустя 38 минут, 33 секунды (28.02.2009 - 13:27) FatCat написал(а):
Если там хтмл, то, ИМХО, лучше резать по тегам:
PHP
$txt preg_replace"#<a href=(.+?)</a>#is"""$txt );

Спустя 6 минут, 28 секунд (28.02.2009 - 13:33) nvrskozzy написал(а):
нет не хтмл) в том-то и дело

Спустя 33 минуты, 21 секунда (28.02.2009 - 14:06) FatCat написал(а):
Цитата (nvrskozzy @ 28.02.2009 - 13:33)
не хтмл

Цитата (nvrskozzy @ 28.02.2009 - 12:48)
между http и первым! пробелом

PHP
$txt preg_replace"#http:\/\/(.+?) #is"""$txt );

По идее, как-то так должно работать.
Я не силен в синтаксисе, вроде бы знак "/" надо отслешивать, а пробел перед #is не надо отслешивать, но если не будет работать, попробуйте отслешить пробел или убрать отслешивания знака "/".

Спустя 9 минут, 14 секунд (28.02.2009 - 14:16) twin написал(а):
Вот так наверняка будет работать:
PHP
<?
$txt preg_replace"#http://([^\s]+?)\s#i"""$txt );

Спустя 17 минут, 45 секунд (28.02.2009 - 14:33) nvrskozzy написал(а):
жесть какая) даж не знаю зачем # и всякие +? ))
спасибо, заработало)))
А можно вопрос) немного не понял.. # раньше не видел просто, ну чёрт с ним)

([^\s]+?)
^ это как я понял отрицание, не пробел.. + это значит что непробелов должно быть хотя бы 1, а вопрос потом зачем? получается "хотябы один непробел", но следом идёт ? который указывает что символ должен быть 1..
чот не догнал)

Спустя 15 минут, 40 секунд (28.02.2009 - 14:49) twin написал(а):
# это разделитель, можно / или | или еще чего, кто как привык. А вопрос обозначает "до первого вхождения", то есть дословно - не пробел, хотя бы один, до первого пробела.

Спустя 53 минуты, 49 секунд (28.02.2009 - 15:43) nvrskozzy написал(а):
спасибо, а без ? работать не будет?)

Спустя 26 минут, 31 секунда (28.02.2009 - 16:09) twin написал(а):
ну дык что мешает проверить? smile.gif

Спустя 1 час, 33 минуты, 26 секунд (28.02.2009 - 17:43) Sylex написал(а):
Пробельный символ \s, а пробелы вроде как игнорятся. Слэши желательно экранировать, хотя и так работает.

Спустя 53 минуты, 37 секунд (28.02.2009 - 18:37) twin написал(а):
Слэши надо экранировать, если в качкстве разделителя используется слэш. Так же и |, потому что в регулярках это означает "или". По этому я и привык # использовать.

Спустя 2 часа, 31 минута, 43 секунды (28.02.2009 - 21:08) FatCat написал(а):
Цитата (Sylex @ 28.02.2009 - 17:43)
Пробельный символ \s, а пробелы вроде как игнорятся.

В регулярках, боюсь, не игнорятся:
PHP
$txt preg_replace"#<a href=(.+?)</a>#is"""$txt );
Если в регулярке между "<a" и "href" будет один пробел, а в тексте два пробела - не отпарсит.

Спустя 22 часа, 48 минут, 1 секунда (1.03.2009 - 19:56) Sylex написал(а):
FatCat
да, ты прав, не помню где я с этим сталкивался, и откуда у меня такое в башке rolleyes.gif

Спустя 6 минут, 27 секунд (1.03.2009 - 20:03) Alchemist написал(а):
пробелы игнорятся если добавить ключ "x"


_____________
Быстрый ответ:

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