yod*_*oda 1 php regex preg-replace
我有一个正则表达式,我用它来减少多个斜杠到单斜杠.目的是读取以前使用apache中的mod_rewrite转换为人类可读链接的URL,如下所示:
http://www.website.com/about/me
Run Code Online (Sandbox Code Playgroud)
这有效:
$uri = 'about//me';
$uri = preg_replace('#//+#', '/', $uri);
echo $uri; // echoes 'about/me'
Run Code Online (Sandbox Code Playgroud)
这不起作用:
$uri = '/about//me';
$uri = preg_replace('#//+#', '/', $uri);
echo $uri; // echoes '/about/me'
Run Code Online (Sandbox Code Playgroud)
我需要能够单独使用每个url参数,但在第二个示例中,如果我爆炸了trailling斜杠,它将返回3个段而不是2个段.如果参数是空的,我可以在PHP中验证是否有,但是因为我正在使用那个正则表达式,如果正则表达式已经为我处理,那将是很好的,所以我不需要担心段验证.
有什么想法吗?
在这种情况下,str_replace可能更快
$uri = str_replace("//","/",$uri)
Run Code Online (Sandbox Code Playgroud)
其次:使用trim:http://hu.php.net/manual/en/function.trim.php
$uri = trim($uri,"/");
Run Code Online (Sandbox Code Playgroud)
这会将字符串中的双斜杠转换为单斜杠,但此代码的优点http://是保留了字符串 ( )协议部分中的斜杠。
preg_replace("#(^|[^:])//+#", "\\1/", $str);
Run Code Online (Sandbox Code Playgroud)