У меня есть веб-сайт, в который пользователи входят в статьи и их ссылки (например, wikipedia). Ссылка, которая была сохранена в базе данных, включает в себя как адрес веб-адреса, так и не-веб-адреса. В настоящее время я гиперсвязываю скрипт с помощью поиска Google q и его работоспособности.
echo("<br><a rel=nofollow target=_blank href='http://www.google.com/search?q=".urlencode($row['ref'])."' class=art>$row[ref]</a>");
Я хочу знать, можно ли автоматически определять мою ссылку как веб-адрес или нет. Если это веб-адрес, тогда, когда пользователи нажимают на гиперссылку, она переходит непосредственно на этот сайт, и если нет, то гиперссылка на поиск Google.
например:
если пользователь вводит эту ссылку в качестве ссылки. Ссылка должна быть связана с этим веб-адресом
http://www.washingtonpost.com/sports/capitals or www.washingtonpost.com/sports/capitals or washingtonpost.com/sports/capitals
или если пользователь вводит ссылку, как показано ниже
washingtonpost+sports+capitals
он должен пойти на поиск googles? q
заранее спасибо за вашу помощь
Вы бы использовали регулярное выражение, чтобы узнать, является ли это ссылкой и сделать ссылку. Регулярное выражение также гарантирует правильность синтаксиса ссылки.
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/"; // The Text you want to filter for urls $text = "http://www.google.com"; #The text you want to filter goes here // Check if there is a url in the text if(preg_match($reg_exUrl, $text, $url)) { // make the urls hyper links echo preg_replace($reg_exUrl, "<a href="{$url[0]}">{$url[0]}</a> ", $text); } else { // if no urls in the text just return the text echo '<a href="http://www.google.com/search?q=',urlencode($text),'">',$text,'</a>'; }
Вы можете проверить наличие ://
чтобы увидеть, являются ли введенные данные ссылкой. Это не идеально, но вы можете настроить его для удовлетворения ваших потребностей:
$URL = 'http://www.google.com?/q=' . urlencode($Reference); if (strpos($Reference, '://') !== false) { $URL = $Reference; } echo '<a href="' . $Reference . '">' . $Reference . '</a>';
Невозможно автоматически определить вашу ссылку как веб-адрес или нет. Вы должны проверить, является ли ссылка URL-адресом или нет.
function isValidURL($url) { return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url); }