这是我目前的代码。我如何调整它以便每次在http://
的{{1}}中包含href
?目前,http://
不在返回的结果中,除非它在原始字符串变量$text
中。如果它不在原href
中,我希望将其添加到$text
。谢谢!
function urlfixer($text){
$pattern = '#\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))#';
$callback = create_function('$matches', '
$url = array_shift($matches);
$url_parts = parse_url($url);
$text = parse_url($url, PHP_URL_HOST) . parse_url($url, PHP_URL_PATH);
$text = preg_replace("/^www./", "", $text);
$last = -(strlen(strrchr($text, "/"))) + 1;
if ($last < 0) {
$text = substr($text, 0, $last) . "…";
}
return sprintf(\'<a rel="nofollow" href="%s">%s</a>\', $url, $text);
');
return preg_replace_callback($pattern, $callback, $text);
}
答案 0 :(得分:2)
既然你不知道你的$ url上是否有http://只是把它粘在开头,然后确保它被剥离以防万一。
$url = 'http://' . str_replace('http://','',$url);
return sprintf('<a rel="nofollow" href="%s">%s</a>', $url, $text);
答案 1 :(得分:1)
$url = array_shift($matches);
if( substr($url,0,6)!='http://' ) {
$url='http://'.$url;
}
这样的事情应该这样做