我有这个非常简单的url bbcoder我想调整,所以如果链接不包含http://添加它,我该怎么做?
$find = array(
"/\[url\=(.+?)\](.+?)\[\/url\]/is",
"/\[url\](.+?)\[\/url\]/is"
);
$replace = array(
"<a href=\"$1\" target=\"_blank\">$2</a>",
"<a href=\"$1\" target=\"_blank\">$1</a>"
);
$body = preg_replace($find, $replace, $body);
答案 0 :(得分:4)
if(strpos($string, 'http://') === FALSE) {
// add http:// to string
}
答案 1 :(得分:4)
您可以使用(http://)?
来匹配http://
(如果存在),并忽略“替换为”模式中的组结果并使用您自己的http://
,如下所示:
$find = array(
"/\[url\=(http://)?(.+?)\](.+?)\[\/url\]/is",
"/\[url\](http://)?(.+?)\[\/url\]/is"
);
$replace = array(
"<a href=\"http://$2\" target=\"_blank\">$3</a>",
"<a href=\"http://$2\" target=\"_blank\">$2</a>"
);
$body = preg_replace($find, $replace, $body);
答案 2 :(得分:3)
// I've added the http:// in the regex, to make it optional, but not remember it,
// than always add it in the replace
$find = array(
"/\[url\=(?:http://)(.+?)\](.+?)\[\/url\]/is",
"/\[url\](.+?)\[\/url\]/is"
);
$replace = array(
"<a href=\"http://$1\" target=\"_blank\">$2</a>",
"<a href=\"http://$1\" target=\"_blank\">http://$1</a>"
);
$body = preg_replace($find, $replace, $body);
如果你要使用回调函数和preg_replace_callback()
,你可以使用这样的东西:
你可以这样做。它总是会添加'http://',而不是没有'http://'
$string = 'http://'. str_replace('http://', '', $string);