текст ссылки, проблема со ссылкой, которая не имеет https - PullRequest
0 голосов
/ 18 января 2019

Пользователи могут добавлять тексты. Эти тексты могут иметь ссылки.

Я бы хотел добавить клик к нему.

Проблема в том, что некоторые ссылки работают так:

http://www.example.com

ссылки, которые не имеют http, не будут работать и станут:

http://mywebsite.com/www.example.com

есть идеи как это решить?

function toLink($titulo){
    $url = '~(?:(https?)://([^\s<]+)|(www\.[^\s<]+?\.[^\s<]+))(?<![\.,:])~i'; 
    $titulo = preg_replace($url, '<a href="$0" target="_blank" title="$0">$0</a>', $titulo);
    return $titulo;
}

1 Ответ

0 голосов
/ 18 января 2019

Используйте preg_replace_callback вместо этого, и вы можете запросить совпадение, чтобы узнать, нужно ли вам добавить протокол.

function toLink($titulo) {
    $url = '~(?:(https?)://([^\s<]+)|(www\.[^\s<]+?\.[^\s<]+))(?<![\.,:])~i'; 
    $titulo = preg_replace_callback($url, function($matches) {
        $url = $matches[0];
        if (!preg_match('/^https?:\/\//', $url)) $url = 'http://'.$matches[0];
        '<a href="'.$url.'" target="_blank" title="'.$url.'">'.$url.'</a>';
    }, $titulo);
    return $titulo;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...