如果像php
这样的字符串包含重复的尾部斜杠,我想用$string
检测。
例如:
$string = "http://somepage.com/something/some.html/////";
到
$string = "http://somepage.com/something/some.html";
我想做一个if
,如果它有重复的话,比如:
If ($string = "http://somepage.com/something/some.html/////";) {
remove extra trailing slashes
}
//else do nothing...
答案 0 :(得分:9)
像这样申请rtrim
$string = rtrim($string, '/');
答案 1 :(得分:6)
您可以使用rtrim()
:
$string = rtrim($string, '/');
如果由于某种原因想要首先检查它是否有尾部斜杠,那么你可以检查最后一个字符,如下所示:
if ($string[ strlen($string)-1 ] === '/') {
$string = rtrim($string, '/');
}
通过rtrim()
抛出字符串并不昂贵,因此您不必首先检查尾部斜杠。
使用正则表达式修剪尾部斜杠有点过分了。
答案 2 :(得分:3)
$string = rtrim($string, '/');
答案 3 :(得分:3)
rtrim
是最佳解决方案,但由于您标记了regex
的完整性:
$string = "http://somepage.com/something/some.html/////";
echo preg_replace('#/+$#','',$string);
>>> http://somepage.com/something/some.html
# - Is the delimiter character
/+ - Matches one or more forward slash
$ - Matches the end of the string
# - Delimiter
Replace with
'' - Nothing (empty string)
答案 4 :(得分:3)
有些地方/
可以重复,例如,您可以通过所有这些链接访问您的问题:
这里唯一的双重/
是http://
,所以让我们考虑一下。单独rtrim
在我提供的大多数情况下都不起作用,所以让我们使用正则表达式。
$parts = explode('//', $full_url, 2);
$parts[1] = rtrim(preg_replace('@/+@', '/', $parts[1]), '/');
$full_url = implode('//', $parts);
unset($parts);
Before: https://stackoverflow.com/questions/13990256/remove-duplicate-trailing-slashes/
After: https://stackoverflow.com/questions/13990256/remove-duplicate-trailing-slashes
---------------------
Before: https://stackoverflow.com/questions/13990256/remove-duplicate-trailing-slashes////
After: https://stackoverflow.com/questions/13990256/remove-duplicate-trailing-slashes
---------------------
Before: https://stackoverflow.com///questions///13990256///remove-duplicate-trailing-slashes////
After: https://stackoverflow.com/questions/13990256/remove-duplicate-trailing-slashes
---------------------
Before: https://stackoverflow.com/questions//13990256/remove-duplicate-trailing-slashes//
After: https://stackoverflow.com/questions/13990256/remove-duplicate-trailing-slashes
---------------------
根据您的问题,我了解您始终会获得完整的网址,因此,我们可以将其分为两部分:
$parts = explode('//', $full_url, 2);
现在我们使用以下内容删除重复的/
preg_replace('@/+@', '/', $parts[1])
然后我们从字符串末尾删除额外的/
:
$parts[1] = rtrim( /*previous line*/ , '/');
然后将其破坏:
$full_url = implode('//', $parts);
unset($parts);