$texet_mes = preg_replace('|https://([a-zA-Z0-9-./]+)|', '<a target=_blank href="http://$1">$1</a>', $texet_mes); Что нужно дописать что бы ссылки с гет параметрами тоже преобразовывались в код, сейчас все работает но без гет (?qwe)
Вопрос, равно, амперсанд? --- Добавлено --- Вопрос можно по позиции после пути разместить (только не забывайте, что это спец. символ), а потом уже его в (под)шаблон строки параметров не включать, т.к. его редко в самой строке параметров используют. --- Добавлено --- В послед. случае вариативность строки параметров так делается: PHP: '|https://([a-zA-Z0-9-./]+(\\?тут можно указать множество, включающее равно и амперсанд)?)|' P.S. Дефис в множестве лучше писать в самом начале или в самом конце.
Теоретически в URL могут быть пробелы, но копируя такую ссылку из адресной строки, пробелы преобразуются в "%20". Поэтому я бы не стал особо заморачиваться и сделал регулярку такого плана: PHP: (https?:\/\/(?:www\.)?[^\s]+) https://regex101.com/r/ndQtJP/1
https://stackoverflow.com/a/1547940/272885 --- Добавлено --- по опыту работы с форумными движками скажу: самую попаболь доставляют пользователи, ставящие сразу за URL знак препинания. Например https://stackoverflow.com/questions/1547899, или http://google.com/maps. здешний парсер bbcode пунктуацию в конце URL отбрасывает. но ведь на самом деле она могла бы быть частью адреса! --- Добавлено --- https://stackoverflow.com/questions/1547899,http://google.com/maps - склеивает, несмотря на запятую. похоже парсер выделает URL до пробела/конца строки, а затем отбрасывыает финальные ".,!?;" неплохое решение. для большинства случаев подходит.
ответа так нормально и не поступило Цель сделать из текста https://yandex.ru/asa?sds=121&fdf=121 ссылку <a href=https://yandex.ru/asa?sds=121&fdf=121>https://yandex.ru/asa?sds=121&fdf=121</a> А вы мне что то пишете вообще не по делу
Сказал как командир Обычное дело для форума, что тема утекает в сторону. Ты можешь найти хорошие примеры регулярок для выделения ссылки по поисковому запросу "regexp to find hyperlink".