За последние 24 часа нас посетили 22760 программистов и 1250 роботов. Сейчас ищут 825 программистов ...

preg_replace

Тема в разделе "PHP для новичков", создана пользователем Kasyak, 4 окт 2021.

  1. Kasyak

    Kasyak Активный пользователь

    С нами с:
    28 мар 2019
    Сообщения:
    40
    Симпатии:
    0
    $texet_mes = preg_replace('|https://([a-zA-Z0-9-./]+)|', '<a target=_blank href="http://$1">$1</a>', $texet_mes);

    Что нужно дописать что бы ссылки с гет параметрами тоже преобразовывались в код, сейчас все работает но без гет (?qwe)
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    Вопрос, равно, амперсанд?
    --- Добавлено ---
    Вопрос можно по позиции после пути разместить (только не забывайте, что это спец. символ), а потом уже его в (под)шаблон строки параметров не включать, т.к. его редко в самой строке параметров используют.
    --- Добавлено ---
    В послед. случае вариативность строки параметров так делается:
    PHP:
    1. '|https://([a-zA-Z0-9-./]+(\\?тут можно указать множество, включающее равно и амперсанд)?)|'
    P.S. Дефис в множестве лучше писать в самом начале или в самом конце.
     
  3. Kasyak

    Kasyak Активный пользователь

    С нами с:
    28 мар 2019
    Сообщения:
    40
    Симпатии:
    0
    спасибо
    спасибо конечно за ответ, но ничего не понятно
     
  4. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Теоретически в URL могут быть пробелы, но копируя такую ссылку из адресной строки, пробелы преобразуются в "%20". Поэтому я бы не стал особо заморачиваться и сделал регулярку такого плана:
    PHP:
    1. (https?:\/\/(?:www\.)?[^\s]+)
    https://regex101.com/r/ndQtJP/1
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    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 до пробела/конца строки, а затем отбрасывыает финальные ".,!?;" неплохое решение. для большинства случаев подходит.
     
    don.bidon нравится это.
  6. Kasyak

    Kasyak Активный пользователь

    С нами с:
    28 мар 2019
    Сообщения:
    40
    Симпатии:
    0
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    Сказал как командир :)
    Обычное дело для форума, что тема утекает в сторону.
    Ты можешь найти хорошие примеры регулярок для выделения ссылки по поисковому запросу "regexp to find hyperlink".