Как мне автоматически конвертировать URL в гиперссылку в PHP? - PullRequest
1 голос
/ 03 апреля 2011

У меня есть скрипт, который выводит обновления статуса, и мне нужно написать скрипт, который автоматически изменяет что-то вроде www.example.com на гиперссылку в куске текста, как это делают Twitter и Facebook. Какие функции я могу использовать для этого в PHP? Если вы знаете учебник, пожалуйста, опубликуйте его.

Ответы [ 4 ]

7 голосов
/ 03 апреля 2011
$string = " fasfasd  http://webarto.com   fasfsafa";

echo preg_replace("#http://([\S]+?)#Uis", '<a rel="nofollow" href="http://\\1">\\1</a>', $string);

Выход:

 fasfasd  <a rel="nofollow" href="http://webarto.com">webarto.com</a>   fasfsafa
0 голосов
/ 25 октября 2014

Вот рабочая функция

function AutoLinkUrls($str,$popup = FALSE){
if (preg_match_all("#(^|\s|\()((http(s?)://)|(www\.))(\w+[^\s\)\<]+)#i", $str, $matches)){
    $pop = ($popup == TRUE) ? " target=\"_blank\" " : "";
    for ($i = 0; $i < count($matches['0']); $i++){
        $period = '';
        if (preg_match("|\.$|", $matches['6'][$i])){
            $period = '.';
            $matches['6'][$i] = substr($matches['6'][$i], 0, -1);
        }
        $str = str_replace($matches['0'][$i],
                $matches['1'][$i].'</xmp><a href="http'.
                $matches['4'][$i].'://'.
                $matches['5'][$i].
                $matches['6'][$i].'"'.$pop.'>http'.
                $matches['4'][$i].'://'.
                $matches['5'][$i].
                $matches['6'][$i].'</a><xmp>'.
                $period, $str);
    }//end for
}//end if
return $str; }
0 голосов
/ 17 июня 2012

Отличное решение!

Я хотел автоматически связывать веб-ссылки, а также обрезать отображаемый текст URL-адреса, потому что длинные URL-адреса выходили из макета на некоторых платформах.

После долгих попыток использовать регулярные выражения, японял, что решение на самом деле CSS - этот сайт дает простое решение с использованием пустого пространства CSS.

0 голосов
/ 03 апреля 2011

Вы можете использовать регулярное выражение, чтобы заменить URL ссылкой.Посмотрите ответы в этой теме: PHP - добавьте ссылку на URL в строке .

...