Main > PHP > Заменить все текстовые ссылки с помощью preg_replace

Заменить все текстовые ссылки с помощью preg_replace

12.02.2012 4 comments » Views: 4,146

RegExp

Как регуляркой найти в тексте, неоформленные url и вставить их как ссылку..

результат:

Author: | Rating: 4/5 | Tags:

4 comments.

Write a comment
  1. Vitaliy Orlov Reply
    21.12.2015 в 3:15 pm

    $text = 'dsfsdfsdf http://www.site-name.ru/ ? dsfsdfsdf';

    $text = preg_replace("#([^\"'=])((https?|ftp)://[^'\"<>\n\r ]+)(?!<\/a>)(['\"<>\n\r ])#i", '\\1 \\2 <a href="\\2"title="Открыть Ссылку в Новом Окне" target="_blank" rel="nofollow">открыть</a>\\4', $text);

    echo $text;
    получится:

    dsfsdfsdf http://www.site-name.ru/ открыть ? dsfsdfsdf
    • eldar Reply
      21.12.2015 в 4:13 pm
      Виталий спасибо за прекрасную функцию, оказывается всё работает very good
      • Vitaliy Orlov Reply
        21.12.2015 в 4:17 pm
        Пожалуйста, рад что помог :)
  2. eldar Reply
    21.12.2015 в 1:17 pm
    здравствуйте, помогите подправить ваш код, у меня есть ссылка в тексте:

    $detail_t="dsfsdfsdf http://www.site-name.ru/ ? dsfsdfsdf";
    При использовании кода

    $detail_t = preg_replace("#([^\"'=])((https?|ftp)://[^'\"\n\r ]+)(?!)(['\"\n\r ])#i", '\\1 \\2 <a href="\\2" title="Открыть Ссылку в Новом Окне" target="_blank" rel="nofollow">открыть</a>\\4', $detail_t);
    echo $detail_t;
    Получаю неправильную ссылку

    "http://www.site-name.ru/ ?"
    помогите подправить код - чтобы он ссылку брал до первого пробела.

Leave a Reply to eldar Cancel reply

Your email address will not be published. Required fields are marked *

Allowed HTML-tags: <a>, <code>, <i>, <em>, <strong>, <b>, <u>, <strike>