在PHP中组合URL部分

时间:2016-06-19 10:06:13

标签: php url

假设我们有两个变量:

$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";

3 个答案:

答案 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);; 
?>