I have these 2 snippets of code that I have been playing with, but can't seem to get the logic to stick in either of them.
I am trying to see if a given string has a '/' at the end, if not then add it.
$path = '.';
if (substr($path, 0, -1) != '/') $path .= '/';
and
if (strrpos('/', $path) !== true) $path .= '/';
the issue im having is that if i make $path
equal to './
then I get this as the output .//
this is the snippet of where i am having the issue
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;
Using substr() Method: The substr() is a built-in function in PHP that is used to extract a part of string. Example: For example, if the string is “Akshit loves GeeksForGeeks”. The last character of the string is “s”.
After getting the position of last occurring space we can easily get the last word in the string using the substr() function and store this in a new string variable. At last, we can use the strlen() function to find the length of the last word in the string.
You might be overthinking it. While the substr()
method will work perfectly it might be simpler to use rtrim()
to remove any trailing slashes and then add one on.
$path = rtrim($path, '/') . '/';
Caution: this will trim multiple trailing forward slashes. so .//////
becomes ./
My solution: simple and even converts back slashes, useful for windows developers:
function fixpath($p) { $p=str_replace('\\','/',trim($p)); return (substr($p,-1)!='/') ? $p.='/' : $p; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With