За последние 24 часа нас посетили 22109 программистов и 1118 роботов. Сейчас ищут 693 программиста ...

Найти все URL и обезвредить

Тема в разделе "PHP для профи", создана пользователем MarklsDidle, 27 окт 2017.

Метки:
  1. MarklsDidle

    MarklsDidle Новичок

    С нами с:
    19 июн 2017
    Сообщения:
    2
    Симпатии:
    1
    Здравствуйте. Возможно ли в неком тексте, который обозначается некой переменной обрезать все ссылки?

    Например
    PHP:
    1. $text = 'Я очень люблю смотреть эти фотографии https://www.instagram.com/p/JFEEFWO/?taken-by=user и я люблю читать твиттер https://twitter.com/name/status/1321312412';
    Возвращает
    PHP:
    1. Я очень люблю смотреть эти фотографии и я люблю читать твиттер
    И главная печаль в том, что функция должна обрезать любую ссылку, даже на левый сайт. И да, <a> не используется.

    Может у кого есть рабочие примеры? Спасибо.
     
    PavelPosner нравится это.
  2. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Регулярка на моя,бегло протестировал,с задачей справляется.
    PHP:
    1. <?php
    2. $text = 'Я очень люблю смотреть эти фотографии https://www.instagram.com/p/JFEEFWO/?taken-by=user и я люблю читать твиттер https://twitter.com/name/status/1321312412';
    3. echo $string = preg_replace('/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i', '', $text);
    Код (Text):
    1. Я очень люблю смотреть эти фотографии  и я люблю читать твиттер
     
    PavelPosner нравится это.
  3. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    @alexblack, я бы чуть подправил, т.к. ссылки могут быть без указания протокола
    PHP:
    1. echo $string = preg_replace('/(^|\s)((https?|ftp|file):)?(\/\/|\b)?[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i', '', $text);