Я пытаюсь преобразовать из ввода textarea ($_POST['content']
) всех URL-адресов для ссылки.
$content = preg_replace('!(\s|^)((https?://)+[a-z0-9_./?=&-]+)!i', ' <a href="$2" target="_blank">$2</a> ', nl2br($_POST['content'])." ");
$content = preg_replace('!(\s|^)((www\.)+[a-z0-9_./?=&-]+)!i', '<a target="_blank" href="#" onclick="location.href='http://$2'; return false;" target="_blank">$2</a> ', $content." ");
Форматы целевых ссылок: www.hello.com
или http(s)://(www).hello.com
Но это, похоже, нарушает любой iframe, изображение или подобное,
Как есть /- правильное регулярное выражение, которое будет игнорировать URL-адреса в тэгах html?
Примечание. Я знаю, что мне нужно два выражения; один из них не обнаруживает никаких связей протокола (например, www.hello.com
, поэтому мне нужно добавить его), а другой - для обнаружения URL-адресов с протоколом (поэтому нет необходимости добавлять).