我在PHP与的preg_match/preg_replace函数的功能正则表达式:正则表达式和斜线
/test\/([A-Za-z]+)\/([A-Za-z]+)\/?([A-Za-z]+)?\/?/
=>
test/\1_\2/\3/
我要的是,如果它只是说http://domain.com/test
那么不要紧wheter存在是否跟踪斜线 - 我该怎么做?
编辑:
我这样做:
我有这样的数组:
$routing = array(
'/test\/([A-Za-z]+)\/([A-Za-z]+)\/?([A-Za-z]+)?\/?/' => 'test/\1_\2/\3/',
'/error\/([0-9]+)/' => 'error/error_\1',
'/sitemap\.html/' => 'sitemap',
'/search\/([^\/]+)?/' => 'search/view/$1',
);
我要做的就是,我执行此操作路由的网址:
global $routing;
foreach ($routing as $pattern => $result) {
if (preg_match($pattern, $url)) {
return preg_replace($pattern, $result, $url);
}
}
return ($url);
我的框架是这样做的路由:
E.g.该URL可以是 测试/堆栈/你好/ 21 这是=到 测试:: stack_hello(21)
所以设置实际上是: 控制器/ FUNC /灰/参数=功能/ func_tion /参数。
我建议你第一个和最后一个字符变成别的东西。这样,你不必逃避所有'/'字符。 –
它必须以斜线结束否则最终会出现解析错误? :) –
它不必:http://php.net/manual/en/regexp.reference.delimiters.php – mario