найти все URL (ссылки) в тексте с помощью PHP - PullRequest
1 голос
/ 20 мая 2011

У меня есть это регулярное выражение кода, которое должно преобразовывать все виды различных URL в ссылки в некотором тексте.

Код preg_replace:

$regex = '@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)@';
$text = preg_replace($regex, '<a href="$1">$1</a>', $item);

теперь он работает почти для всех URL, которые вы можете себе представить, но у меня проблемы с запятыми и специальными символами в URL ...

Проблема заставляет меня:

http://www.sdfsdfsdf.sd/si/391,1000,1/more.html

http://sdfsddsdf -sdfsdfds.sr / Компонент / параметр, com_contact / Itemid, 3 / языки, си /

Забавно здесь, в stackoverflow, эти два в порядке:)

Спасибо, с наилучшими пожеланиями,

Ответы [ 3 ]

6 голосов
/ 20 мая 2011

Вы должны немного отредактировать свое регулярное выражение. Это сделает работу:

$regex = '@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.\,]*(\?\S+)?)?)*)@';

Как видите, здесь добавлена ​​запятая [-\w/_\.\,] и ничего более.

Наслаждайтесь!

2 голосов
/ 20 мая 2011

Попробуйте использовать следующую функцию:

function replaceURLWithHTMLLinks(text) {
  var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
  return text.replace(exp,"<a href='$1'>$1</a>"); 
}

Нашли здесь: Как заменить простые URL ссылками?

0 голосов
/ 03 ноября 2015

Вы можете использовать эту библиотеку https://github.com/mxkh/url-finder для простого поиска URL-адресов на HTML-странице или в тексте. Iinstall с композитором composer require mxkh/url-finder

Также в этой библиотеке есть поддержка для поиска ссылок на видео из популярных видео сервисов, таких как Youtube, Vimeo.

Надеюсь, это кому-нибудь пригодится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...