0

PHP: Проверка последнего символа на '/' и добавление при отсутствии

11

У меня есть два фрагмента кода, с которыми я работал, но не могу разобраться с логикой в них.

Я пытаюсь проверить, заканчивается ли данная строка на символ '/', и если нет, то добавить его.

$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 ответ(ов)

0

Вот мой вариант решения, который прост и даже преобразует обратные слэши, что может быть полезно для разработчиков на Windows:

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

В этой функции мы сначала удаляем пробелы в начале и в конце строки с помощью trim(), затем заменяем все обратные слэши на прямые с помощью str_replace(). В конце проверяем, заканчивается ли полученная строка на слэш. Если нет, добавляем его.

0

Вы также можете получить количество символов в строке с помощью функции strlen().

Кроме того, вы можете использовать цикл for, чтобы пройтись по каждому индексу строки и проверить, равен ли этот индекс символу '/'. Вот пример кода, который иллюстрирует это:

$string = 'test/';
$countString = strlen($string);

for($i = 0; $i < $countString; $i++) {
    if ($string[$i] === '/') {
        echo 'да, строка содержит /';
        die;
    }
}

Этот код сначала определяет длину строки с помощью strlen(), а затем с помощью цикла проверяет каждый символ на наличие '/'. Если такой символ найден, программа выводит сообщение и завершает выполнение.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь