php检查最后一个字符是否为'/',如果没有,则将其粘贴

Eli*_*Eli 42 php

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

我试图看看给定的字符串是否在末尾有一个'/',如果没有,则添加它.

$path = '.';

if (substr($path, 0, -1) != '/')
    $path .= '/';
Run Code Online (Sandbox Code Playgroud)

if (strrpos('/', $path) !== true)
    $path .= '/';
Run Code Online (Sandbox Code Playgroud)

我所拥有的问题是,如果我$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;
Run Code Online (Sandbox Code Playgroud)

Mik*_*e B 162

你可能会过度思考它.虽然该substr()方法将完美地工作,但可能更简单地使用rtrim()删除任何尾部斜杠然后添加一个斜杠.

$path = rtrim($path, '/') . '/';
Run Code Online (Sandbox Code Playgroud)

注意:这将修剪多个后向正斜杠..//////变得如此./

  • 建议:使用`rtrim($ path,DIRECTORY_SEPARATOR).相反,DIRECTORY_SEPARATOR`保持平台中立. (11认同)
  • @ChrisBaker注意对URL使用DIRECTORY_SEPARATOR,因为它不会输出正确的URL. (5认同)

小智 5

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

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