假设我们有两个变量:
$base = "http://some.base.url/script.php?query=string";
$link = "./anotherScript.php?query=anotherString";
PHP中是否有任何方法可以将这些URL部分合并到:
$result = "http://some.base.url/anotherScript.php?query=anotherString";
答案 0 :(得分:2)
您可以将parse_url函数用于解析基本URL,也可以使用str_replace for $ link。
在示例中;
Flush()
它将给出echo http://some.base.url/anotherScript.php?query=anotherString
答案 1 :(得分:0)
我在自己的项目中使用此功能。
All()
示例输出:
public static function uri($base, $com)
{
// check base
if(preg_match('/(https?|ftp|tcp|udp):\/\/([\w]+\.)?([\w]{4,})((\.\w{2,5}){1,2})/', $base)){
$base = parse_url($base);
if(preg_match('/^\//', $com)){
$base['path'] = $com;
unset($base['query']);
}elseif (preg_match('/^\.\//', $com)) {
$base['path'] = strrev(preg_replace('/^[\w\s-_\.]+\//',"",strrev($base['path'])));
$base['path'] .= substr($com, 1);
unset($base['query']);
}else if(parse_url($com , PHP_URL_QUERY) != null){
if(isset($base['query'])){
$base['query'] .= '&'.substr($com, 1);
}else{
$base['query'] = substr($com, 1);
}
}
if(!isset($base['query'])) return $base["scheme"]."://".$base["host"].$base['path'];
else return $base["scheme"]."://".$base["host"].$base['path'].'?'.$base['query'];
}else {
return false;
}
}
答案 2 :(得分:-1)
<?php
$url = explode('/', $base);
array_pop($url);
$result = implode('/', $url).substr($link, 1);;
?>