Как автоматически преобразовать URL-адрес в гипер ссылку в PHP?

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

 $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 

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

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

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

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

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

 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; }