@websiteserf

В чем проблема обработки строки со слешем php?

Данный код будто не воспринимает букву v перед слешем и вырезает ее вместе со слешем (\v)

$st = "data\valid";
print "
$st <br>
";

НО этот код работает корректно и ничего не вырезает, проблема лишь с буквой V.
$st = "data\alid";
print "
$st <br>
";


Эту проблему нашел в след. коде
public static function getLibPath($lib) {
        $path = str_replace(DIRECTORY_SEPARATOR, '/', $lib);
        $pathKey = explode('/', $path)[0];
        if ($pathKey == 'module') {
            return MODULE_DIR_PREFIX.substr($path, 7).'.php';
        } else {
        	return LIBS_DIR.$path.'.php';
		}
    }

На вход функция принимает строку пространства имен класса-функции в данном случае: data\valid::validEmail();
и генерирует полный путь до файла класса
LIBS_DIR содержит в себе путь до файла библиотек - /libs

Функция работоспособна если только на вход не попадает строка data\valid

код дебага:

$st = "data\alid";
$str = "data\valid";
print "
Input data: <b>data\alid</b>
<br>
result: $st
<br>
---------------------------
<br>
Input data: <b>data\valid</b>
<br>
result: $str;
";


РАЗОБРАЛСЯ - Это оказался unix символ \v
  • Вопрос задан
  • 275 просмотров
Пригласить эксперта
Ответы на вопрос 1
trevoga_su
@trevoga_su
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы