Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Разное поведение preg_match и preg_replace
Форумы портала PHP.SU » PHP » Программирование на PHP » Разное поведение preg_match и preg_replace

Страниц (1): [1]
 

1. Ubuntu - 19 Мая, 2016 - 18:33:48 - перейти к сообщению
Добрый день, есть регулярка для поиска ссылок в тексте
CODE (htmlphp):
скопировать код в буфер обмена
  1. (https?:\/\/)?([^\s,!><\[\]\/а-яёА-ЯЁ=:]+\.(?:ru|com|by|it|org|com|net|ua|рф|pro|info|su|de|me|us|be|tv|cc|se|fm|to|uk|co|nl|io){1}?(?:\/(?:[^\s,!>\]\[<]+)?)?)


с preg_replace отлично жил до недавлено времени, но тут понадобилось укорачивать ссылки, если они слишком длинные, и для этого я планировал сначала находить ссылки с помощью preg_match, потом их обрабатывать и заменять c помощью str_replace

Но при использовании preg_match на тексте, в котором есть две ссылки с http, во второй ссылке регулярка находит текст без http,
то есть preg_replace находила ссылки вида
http://google[dot]com
http://google.com

то preg_match находит
http://google[dot]com
google.com


не велика беда, но тем не менее я не могу вывести ссылку как ее ввел пользователь в тексте, что мне не нравится
2. OrmaJever - 19 Мая, 2016 - 20:58:48 - перейти к сообщению
ой что-то мне подсказывает что google.com это не вторая ссылка а просто 1 индекс массива найденого (а именно то что в первых круглых скобках)

 

Powered by ExBB FM 1.0 RC1