<?php
//url 格式 [1]
$txt="http://www.xxx.com/index.php/param1/test1/param2/test2/param3/test3";

//url 格式 [1-2]
// $txt="http://www.xxx.com/file/index.php/param1/test1/param2/test2/param3/test3";
//url 格式 [2]
//$txt="http://www.xxx.com/index.php/param1-test1-param2-test2-param3-test3";
$pattern="/(?<!\/)\/(?!\/)/";
$chars = preg_split($pattern, $txt, -1, PREG_SPLIT_NO_EMPTY);
  $chars=array_slice($chars,2);
  echo "<pre>";
var_dump($chars);
?>
碰到这些url写法,你们的获取方式是怎么样的,探讨探讨

解决方案 »

  1.   

    不太清楚你的意思
    形如 http://www.xxx.com/index.php/param1/test1/param2/test2/param3/test3 的url在 $_SERVER['PATH_INFO'] 中以 param1/test1/param2/test2/param3/test3 的形式存放转换也很容易$s = 'param1/test1/param2/test2/param3/test3';
    $t = preg_replace('#([^/]+)/([^/]+)/?#', '&$1=$2', $s);
    parse_str($t, $ar);
    print_r($ar);Array
    (
        [param1] => test1
        [param2] => test2
        [param3] => test3
    )
      

  2.   

    你这个用的是CI?$this->uri->segment(n)
    它允许你重新分割一个详细的URI分段。 n 为你想要得到的段数。分割数按照从左至右的顺序编排。
      

  3.   

    楼主搞框架啊。我直接explode('/', $url);
      

  4.   

    $this->uri->segment(n)CI是这个方法ci是这样处理的:
    explode("/", preg_replace("|/*(.+?)/*$|", "\\1", $this->uri_string))
     不过我会采用 explode 这个方式了。