php 检查最后一个字符是否是 '/' 如果不是则添加它

新手上路,请多包涵

我有这 2 段代码,我一直在玩,但似乎无法让逻辑坚持其中任何一个。

我试图查看给定字符串的末尾是否有“/”,如果没有则添加它。

$path = '.';

 if (substr($path, 0, -1) != '/')
    $path .= '/';

if (strrpos('/', $path) !== true)
    $path .= '/';

我遇到的问题是,如果我使 $path 等于 './ 那么我得到这个作为输出 .//

这是我遇到问题的地方的片段

if (!is_array($paths))
    $this->classPath[] = $paths;
else
    $this->classPath = $paths;

foreach ($this->classPath as $path) {

    if (strrpos('/', $path) !== true)// || substr_count($path, '/') >= 0)
        $path = $path . '/';
    //else
        //$this->classPath[] = $path;
        //echo '0';
    $pathArr[] = $path;

原文由 Eli 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 397
2 个回答

你可能想多了。虽然 substr() 方法可以完美运行,但使用 rtrim() 删除任何尾部斜杠然后添加一个可能更简单。

 $path = rtrim($path, '/') . '/';

注意:这将修剪多个尾部正斜杠。所以 .////// 变成 ./

原文由 Mike B 发布,翻译遵循 CC BY-SA 3.0 许可协议

我的解决方案:简单甚至转换反斜杠,对windows开发人员有用:

 function fixpath($p) {
    $p=str_replace('\\','/',trim($p));
    return (substr($p,-1)!='/') ? $p.='/' : $p;
}

原文由 countach 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏