У меня есть сценарий, который выводит обновления состояния, и мне нужно написать сценарий, который автоматически изменяет что-то вроде 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; }