解析URL和路由问题

时间:2013-05-16 18:39:46

标签: php url

www.foo.com/Base/index.php/controller/method/

这是我的网址,我需要从中获取“控制器/方法”部分 - 是否有任何优雅的方法来实现这一目标?

parse_url($url, PHP_URL_PATH)

这会很棒,但它会返回整个“Base / index.php / controller / method”部分。

1 个答案:

答案 0 :(得分:3)

$url = "http://www.foo.com/Base/index.php/controller/method/";
$path = parse_url($url, PHP_URL_PATH);

$parts = explode("/", $path);
$index = array_search("index.php", $parts);

$controller = $parts[$index+1];
$method     = $parts[$index+2];

您未提供有关网址格式的任何其他信息。但作为示例,您可以使用带有preg_match()的正则表达式:

$url = "http://www.foo.com/Base/index.php/controller/method/";
preg_match ("/^.*Base\/index.php\/([a-zA-Z0-9_]*)\/([a-zA-Z0-9_]*)\/?/", $url, $data);
$controller = $data[1];
$method     = $data[2];