使用PHP删除URL中的尾部斜杠的最佳方法

dan*_*iel 49 php

我有一些URL,比如www.amazon.com/,www.digg.com或者www.microsoft.com/我想删除尾部斜杠,如果它存在,那么不仅仅是最后一个字符.是否有一个trimrtrim这个?

Eri*_*rik 220

你提出rtrim了答案,为什么不直接查找?

$url = rtrim($url,"/");
Run Code Online (Sandbox Code Playgroud)

作为旁注,通过执行以下操作查找任何PHP函数:

(rtrim代表'右边修剪')

  • 给一个男人一个火,他温暖了一天,让一个人着火,他的余生都很温暖.你明白了我的意思.php.net网站是该语言的杀手级功能之一 - 使用它. (50认同)
  • 我认为避免努力是好的,你认为这个问题对其他人有价值.我偶然发现了这个答案,我很高兴.对于PHP开发人员来说,SO真正成为`php.net`的坚实竞争对手. (16认同)
  • stackoverflow快得多:-D (12认同)
  • @daniel:SO不是你的个人搜索引擎.避免*任何*努力自己回答你的问题通常不太受欢迎...... (9认同)
  • SEO-wise SO要好得多.真的SO是PHP语言的杀手级功能之一.找到简单,特定情况的答案的能力是SO的*TRUE*值.这就是为什么我喜欢这样的问题.谢谢. (6认同)

Dar*_*lli 9

简单,适用于Windows和Unix:

$url = rtrim($url, '/\\')
Run Code Online (Sandbox Code Playgroud)

  • @SethB 第二个参数是要修剪的字符串列表。一个字符是“/”,另一个字符是“\”。然而,在 PHP 字符串中,您需要转义正斜杠,它看起来像“\\”。因此:“/\\”或“\\/”都可以。 (3认同)

小智 5

我来这里是为了寻找一种删除尾部斜杠和重定向浏览器的方法,我想出了一个答案,我想与任何追随我的人分享:

//remove trailing slash from uri
if( ($_SERVER['REQUEST_URI'] != "/") and preg_match('{/$}',$_SERVER['REQUEST_URI']) ) {
    header ('Location: '.preg_replace('{/$}', '', $_SERVER['REQUEST_URI']));
    exit();
}
Run Code Online (Sandbox Code Playgroud)

($_SERVER['REQUEST_URI'] != "/")会避免主机URI如www.amazon.com/因为Web浏览器总是一个域名后发送斜线,并preg_match('{/$}',$_SERVER['REQUEST_URI'])会匹配所有其它的URI以斜线作为最后一个字符。然后preg_replace('{/$}', '', $_SERVER['REQUEST_URI'])将删除斜杠并移交header()给重定向。该exit()函数对于停止任何进一步的代码执行很重要。