У меня есть функция, которая добавит тег <a href>
перед ссылкой и </a>
после ссылки. Однако это ломается для некоторых веб-страниц. Как бы вы улучшили эту функцию? Благодаря!
function processString($s) { // check if there is a link if(preg_match("/http:\/\//",$s)) { print preg_match("/http:\/\//",$s); $startUrl = stripos($s,"http://"); // if the link is in between text if(stripos($s," ",$startUrl)){ $endUrl = stripos($s," ",$startUrl); } // if link is at the end of string else {$endUrl = strlen($s);} $beforeUrl = substr($s,0,$startUrl); $url = substr($s,$startUrl,$endUrl-$startUrl); $afterUrl = substr($s,$endUrl); $newString = $beforeUrl."<a href=\"$url\">".$url."</a>".$afterUrl; return $newString; } return $s; }
function processString($s) { return preg_replace('/https?:\/\/[\w\-\.!~#?&=+\*\'"(),\/]+/','<a href="$0">$0</a>',$s); }
Он разбивается на все URL-адреса, содержащие «специальные» символы HTML. Чтобы быть в безопасности, передайте три компонента строки через htmlspecialchars (), прежде чем объединять их вместе (если вы не хотите разрешать HTML вне URL-адреса).
function processString($s){ return preg_replace('@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)@', '<a href="$1">$1</a>', $s); }
Найди его здесь