frost18
@frost18
Программист PHP

Какое использовать регулярное выражения для поиска и замены url?

Требуется найти в тексте адреса вида:
http://www.test.ru
http://www.тест.рф
https://www.test.ru
https://www.тест.рф
www.test.ru
www.тест.рф

И заменить их ссылками вида
<a href="http://www.test.ru" target="_blank">www.test.ru</a>

$pattern = "/(?i)\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'\".,<>?«»“”‘’]))/";
$inp = 'Привет мир https://www.test.ru?sddf=12&sdfs=23 привет www.test.ru мир';
$text = preg_replace($pattern, '<a href="$1" target="_blank">$1</a>', $inp);

В моем примере адрес в вида "www.test.ru" не будет добавляться "http" в ссылку, соответственное она будет не правильно открываться
  • Вопрос задан
  • 534 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы