PHP: Проверка последнего символа на '/' и добавление при отсутствии
У меня есть два фрагмента кода, с которыми я работал, но не могу разобраться с логикой в них.
Я пытаюсь проверить, заканчивается ли данная строка на символ '/', и если нет, то добавить его.
$path = '.';
if (substr($path, -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;
}
Не могли бы вы подсказать, в чем ошибка, и как правильно проверить, есть ли '/' в конце строки?
2 ответ(ов)
Вот мой вариант решения, который прост и даже преобразует обратные слэши, что может быть полезно для разработчиков на Windows:
function fixpath($p) {
$p = str_replace('\\', '/', trim($p));
return (substr($p, -1) !== '/') ? $p . '/' : $p;
}
В этой функции мы сначала удаляем пробелы в начале и в конце строки с помощью trim()
, затем заменяем все обратные слэши на прямые с помощью str_replace()
. В конце проверяем, заканчивается ли полученная строка на слэш. Если нет, добавляем его.
Вы также можете получить количество символов в строке с помощью функции strlen()
.
Кроме того, вы можете использовать цикл for
, чтобы пройтись по каждому индексу строки и проверить, равен ли этот индекс символу '/'
. Вот пример кода, который иллюстрирует это:
$string = 'test/';
$countString = strlen($string);
for($i = 0; $i < $countString; $i++) {
if ($string[$i] === '/') {
echo 'да, строка содержит /';
die;
}
}
Этот код сначала определяет длину строки с помощью strlen()
, а затем с помощью цикла проверяет каждый символ на наличие '/'
. Если такой символ найден, программа выводит сообщение и завершает выполнение.
Функции startsWith() и endsWith() в PHP
Как получить расширение файла в PHP?
Как читать большой файл построчно?
ReCaptcha 2.0 с использованием AJAX
Почему нельзя вызывать абстрактные функции из абстрактных классов в PHP?