我有这两个代码片段,我一直在玩,但似乎无法让逻辑坚持其中任何一个.
我试图看看给定的字符串是否在末尾有一个'/',如果没有,则添加它.
$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)
注意:这将修剪多个后向正斜杠..//////变得如此./
小智 5
我的解决方案:简单甚至转换反斜杠,对 Windows 开发人员有用:
function fixpath($p) {
$p=str_replace('\\','/',trim($p));
return (substr($p,-1)!='/') ? $p.='/' : $p;
}
Run Code Online (Sandbox Code Playgroud)