Нужно в тексте $text найти ссылки, которые могут быть в разных форматах и сделать их реальными ссылками, т.е. добавить
<a href="http://google.com" target="_blank">http://google.com</a>
Есть такой пример
Но он не работает, если текст со ссылкой внутри заканчивается тегом, например:
<p>Вот так выглядит ссылка на сайт <a href="http://google.com" target="_blank">http://google.com</a></p>
В этом случае ссылка получается с окончанием
<p>Вот так выглядит ссылка на сайт <a href="http://google.com/%3C/p%3E">http://google.com</a></p>
Подскажите, пожалуйста, как доработать скрипт, чтобы он корректно такие тексты обрабатывал.
Вот еще пример функции, но она отрабатывается также, заканчивается тегом P:
return preg_replace_callback(
'{
(?:
(\w+://) # протокол с двумя слэшами
| # - или -
www\. # просто начинается на www
)
[\w-]+(\.[\w-]+)* # имя хоста
\S* # URI (но БЕЗ кавычек)
(?: # последний символ должен быть...
(?<! [[:punct:]] ) # НЕ пунктуацией
| (?<= [-/&+*] ) # но допустимо окончание на -/&+*
)
}xi',
"hrefCallback",
$text
);
Нужно поправить одну из этих функций или обе или может есть более простой вариант?
Проверяйте позицию подстроки, в которой перед протоколом http
отсутствует атрибут href="
. Таким образом существующие ссылки не будут модифицированы:
$str = '
какой-то текст и <a href="http://site.com">Ссылка</a>
и ещё ссылка https://google.com
';
$patt = '~(?<!href=")https?://\S+~';
$repl = '<a href="$0" target="_blank">$0</a>';
echo preg_replace($patt, $repl, $str);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как правильно заполнить форму при помощи JS и залить форму с данными в БД? Надо при соответствующим выборе выпадающего списка автоматически...