是否有任何快速功能可以将HtTp://www.ExAmPle.com/blah
转换为http://www.example.com/blah
基本上我想小写一个url的不区分大小写的部分。
答案 0 :(得分:5)
不,你必须自己编写代码。
但您可以使用parse_url()
将网址拆分为其中的部分。
答案 1 :(得分:3)
既然你要求“快速”,这里就是一个完成这项工作的单线:
$url = 'HtTp://User:Pass@www.ExAmPle.com:80/Blah';
echo preg_replace_callback(
'#(^[a-z]+://)(.+@)?([^/]+)(.*)$#i',
create_function('$m',
'return strtolower($m[1]).$m[2].strtolower($m[3]).$m[4];'),
$url);
输出:
http://User:Pass@www.example.com:80/Blah
修改/ ADD:强>
我已经测试过,这个版本比使用preg_replace_callback和匿名函数快55%:
echo preg_replace(
'#(^[a-z]+://)(.+@)?([^/]+)(.*)$#ei',
"strtolower('\\1').'\\2'.strtolower('\\3').'\\4'",
$url);
答案 2 :(得分:1)
答案 3 :(得分:1)
这是一个解决方案,扩展了@ThiefMaster已经提到的内容:
<强> DEMO 强>
function urltolower($url){
if (($_url = parse_url($url)) !== false){ // valid url
$newUrl = strtolower($_url['scheme']) . "://";
if ($_url['user'] && $_url['pass'])
$newUrl .= $_url['user'] . ":" . $_url['pass'] . "@";
$newUrl .= strtolower($_url['host']) . $_url['path'];
if ($_url['query'])
$newUrl .= "?" . $_url['query'];
if ($_url['fragment'])
$newUrl .= "#" . $_url['fragment'];
return $newUrl;
}
return $url; // could return false if you'd like
}
注意:没有经过测试,但它应该让你去。