PHP - 从字符串中找到URL根的最佳方法?
我使用PHP。PHP - 从字符串中找到URL根的最佳方法?
我有一个看起来像这样
http://www.mydomain.com/mydir/mydir2/?something=hello
的URL我想这样:
我做到了这样,但感觉错了方式去做
长而丑陋。
$url = 'http://www.mydomain.com/mydir/mydir2/?something=hello';
$root_url_a = explode('/', $url);
$root_url = $root_url_a[0] . '//' . $root_url_a[2];
$root_url_clean = $root_url_a[2];
建议
- 正则表达式?
- Xpath?
- 对我有些未知的PHP函数?
这样做的最短最正确的方法将得到我的投票。
我会做像这样:
$url = "http://www.mydomain.com/mydir/mydir2/?something=hello";
echo parse_url($url, PHP_URL_HOST);
// Would echo:
http://www.mydomain.com
为什么我得到downvoted?这是解析url的完全合法的方式?如果此代码有任何问题 - 请咨询。 – Marcus 2012-08-09 08:31:52
我不是downvoter,但这不会做你声称的,因为PHP_URL_HOST部分不包括该计划,所以你会得到的所有'www.mydomain.com' – 2012-08-09 11:13:59
我要说RTM)
http://php.net/manual/en/function.parse-url.php
<?php
$url = 'http://username:[email protected]/path?arg=value#anchor';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_HOST);
?>
确定这里是一个例子:
$url = parse_url('http://www.mydomain.com/mydir/mydir2/?something=hello');
echo $url->scheme.'://'.$url->host;
沿着正确的线条。
虽然在技术上,这甚至不是正确的,因为这取决于你是否在计划或不是一个url parse_url
实际上可以改变它分配变量的方式发送,所以我写了:
function return_url($url){
$parsed_url = parse_url($url);
if(!$parsed_url){
return false;
}
if(isset($parsed_url['scheme'])){
if(!isset($parsed_url['host'])){
return false;
}else{
return $parsed_url['scheme'].'://'.$parsed_url['host'];
}
}
if(isset($parsed_url['path'])){
return 'http://'.$parsed_url['path'];
}
return false;
}
Downvoter,谨慎解释? – Sammaye 2012-08-09 08:29:33
复仇downvoting可能 – 2012-08-09 08:33:06
http://php.net/manual/en/function.parse-url.php – 2012-08-09 08:08:36
'XPath'?由于什么时候是一个URL一个XML文件? – EaterOfCode 2012-08-09 08:12:20
为什么投下这个问题呢? – 2012-08-09 08:32:07