PHP - Добавить ссылку на URL в строке - PullRequest
9 голосов
/ 18 ноября 2010

У меня есть функция, которая добавляет тег <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;
}

Ответы [ 3 ]

19 голосов
/ 18 ноября 2010
function processString($s) {
    return preg_replace('/https?:\/\/[\w\-\.!~#?&=+\*\'"(),\/]+/','<a href="$0">$0</a>',$s);
}
1 голос
/ 18 ноября 2010
function processString($s){
  return preg_replace('@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)@', '<a href="$1">$1</a>', $s);
}

Нашел здесь

1 голос
/ 18 ноября 2010

Разрывается для всех URL-адресов, которые содержат «специальные» символы HTML.Для безопасности перед тем как объединить их вместе, передайте три строковых компонента через htmlspecialchars () (если вы не хотите разрешить использование HTML вне URL).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...