这似乎是一个容易解决的问题,但它并不像看起来那么容易.我在PHP中有这个字符串:
////%postname%/
Run Code Online (Sandbox Code Playgroud)
这是一个URL,我从不想要连续多个斜杠.我永远不想完全删除斜杠.
它应该是这样的:
/%postname%/
Run Code Online (Sandbox Code Playgroud)
因为结构可能看起来不同,我想我需要一个聪明的preg替换正则表达式.它需要像这样使用URLS:
////%postname%//mytest/test///testing
Run Code Online (Sandbox Code Playgroud)
哪个应转换为:
/%postname%/mytest/test/testing
Run Code Online (Sandbox Code Playgroud)
Ali*_*xel 18
干得好:
$str = preg_replace('~/+~', '/', $str);
Run Code Online (Sandbox Code Playgroud)
要么:
$str = preg_replace('~//+~', '/', $str);
Run Code Online (Sandbox Code Playgroud)
甚至:
$str = preg_replace('~/{2,}~', '/', $str);
Run Code Online (Sandbox Code Playgroud)
一个简单的str_replace()也可以做到这一点(如果连续斜线不超过两个):
$str = str_replace('//', '/', $str);
Run Code Online (Sandbox Code Playgroud)
晚了,但所有这些方法也会删除http://斜杠,但是这个。
function to_single_slashes($input) {
return preg_replace('~(^|[^:])//+~', '\\1/', $input);
}
# out: http://localhost/lorem-ipsum/123/456/
print to_single_slashes('http:///////localhost////lorem-ipsum/123/////456/');
Run Code Online (Sandbox Code Playgroud)