Php, если последний символ является "/", если нет,
У меня есть два фрагмента кода, с которыми я играл, но, похоже, не может заставить логику встать в любой из них.
Я пытаюсь увидеть, имеет ли данная строка в конце '/', если не добавить ее.
$path = '.';
if (substr($path, 0, -1) != '/')
$path .= '/';
и
if (strrpos('/', $path) !== true)
$path .= '/';
проблема im im заключается в том, что если я делаю $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;
Ответы
Ответ 1
Вы можете переусердствовать. В то время как метод substr()
будет работать отлично, может быть проще использовать rtrim()
, чтобы удалить любые завершающие косые черты, а затем добавить их.
$path = rtrim($path, '/') . '/';
Внимание: это позволит обрезать несколько косых черт вперед. поэтому .//////
становится ./
Ответ 2
Вы просто используете substr неправильно.
Чтобы получить последний символ, вы просто используете отрицательное смещение: substr($path,-1)
В вашем коде не хватает 2 основных вещей, необходимых для программирования:
Отладка так же просто, как просто повторять ваши переменные.
повторив substr($path, 0, -1)
, вы можете понять, что ваш код несколько ошибочен, и, прочитав документацию, вы можете увидеть правильное использование.
Ответ 3
Мое решение: простой и даже конвертирующий обратные косые черты, полезные для разработчиков Windows:
function fixpath($p) {
$p=str_replace('\\','/',trim($p));
return (substr($p,-1)!='/') ? $p.='/' : $p;
}
Ответ 4
вы можете попробовать использовать эту функцию
function endsWith($FullStr, $needle)
{
$StrLen = strlen($needle);
$FullStrEnd = substr($FullStr, strlen($FullStr) - $StrLen);
return $FullStrEnd == $needle;
}
взято из сообщение в блоге
затем используйте его, как
if (endsWith($path,'/') == false)
{
$path = $path."/";
}
и offcourse, если вы не хотите использовать вышеприведенную функцию для умножения вещей, тогда вы должны изменить способ использования substr
правильный способ получить последний char - substr($path,-1)