Я создал систему сообщений и хотел бы автоматически конвертировать url-ссылки в сообщении для интерактивных ссылок HTML, если опубликовано новое сообщение. Я написал эту простую функцию, но она не работает должным образом:ereg_replace не работает правильно
// LINK ALL URLS
$message = ereg_replace("http://([.]?[a-zA-Z0-9_/-])*", "<a href=\"\\0\" target=\"_blank\">\\0</a>", $message);
$message = ereg_replace("(^| |\n)(www([.]?[a-zA-Z0-9_/-])*)", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $message);
Для некоторых URLs он работает, но и с другими URLs есть проблемы и результаты, как это:
<a href="http://www.example.com/index.php">http://www.example.com/index.php</a>?mode=index&page=1
или
<a href="http://www.youtube.com/watch">http://www.youtube.com/watch</a>?v=jSh5Y7jq9FQ
Как вы можете видеть, это не правильно конвертированы включительно часть за знак вопроса. Может кто-нибудь исправить/обновить мой код выше? И, кстати, может быть, возможно, другое (и лучшее!) Решение вместо использования * ereg_replace *?
Эта функция ДЕФИЦИРОВАНА с PHP 5.3.0. Опираясь на эту функцию, очень не рекомендуется. Обход проблемы: используйте 'preg_replace()' – hek2mgl
Спасибо за эту информацию, я знал, что это было DEPRECATED, пока я просто искал быстрое исправление, в будущем я буду использовать preg_replace(). –
это зависит от вас;) – hek2mgl