Это сводило с ума, но я не могу найти ответ. Мы располагаем технической базой знаний, которая иногда включает пути самбы Windows для сопоставления с сетевыми дисками.
Например: \\servername\sharename
Когда мы включаем пути, у которых есть две обратные косые черты, сопровождаемые друг другом, они не экранируются должным образом при запуске 'addlashes'. Мои ожидаемые результаты будут "\\\\servername\\sharename
", однако он возвращает "\\servername\\sharename
". Очевидно, что при последующем запуске 'stripslashes' префикс двойной обратной косой черты - это всего лишь одна косая черта. Я также пытался использовать str_replace("\\", "\", $variable);
, однако он возвращает "\servername\sharename"
, когда я ожидал "\\servername\sharename"
.
Таким образом, в случае с добавленной косой чертой он игнорирует первый набор двойной обратной косой черты, а с помощью str_replace изменяет двойную обратную косую черту в одну закодированную обратную косую черту.
Нам нужно запустить addlashes и stripslashes для вставки базы данных; использование pg_escape_string не будет работать в нашем конкретном случае.
Это работает на PHP 5.3.1 на Apache.
РЕДАКТИРОВАТЬ: Пример кода
$variable = 'In the box labeled Folder type: \\servername\sharename';
echo addslashes($variable);
Возвращает: In the box labeled Folder type: \\servername\\sharename
РЕДАКТИРОВАТЬ: Пример кода # 2
$variable = 'In the box labeled Folder type: \\servername\sharename';
echo str_replace('\\', '\', $variable);
Возвращает: In the box labeled Folder type: \servername\sharename
Я также хотел бы заявить, что использование одинарных или двойных кавычек не дает мне других результатов (как и следовало ожидать). Использование одного или обоих дает мне одинаковые точные результаты.
У кого-нибудь есть предложения по поводу того, что я могу сделать?