Сценарий делает то, что ему говорят, на самом деле.
В $q
двойная обратная косая черта оценивается как единая обратная косая черта (первая экранируется от второй обратной косой черты), которая затем удаляется.
Если метасимволы не нужно оценивать, вам нужно использовать одинарные кавычки:
$q = 'This is \\some text';
// String is now: This is \\some text
$q = stripslashes($q);
// String is now: This is \some text
РЕДАКТИРОВАТЬ В соответствии с вашим комментарием в ответе Майклса может возникнуть некоторая путаница относительно количества действительных обратных косых черт в вашем входе. Рассмотрим следующий вход:
$q1 = "This is\\\some \text";
$q2 = 'This is\\\some \text';
Первый будет на самом деле содержать This is \\some <TAB>ext
. Это связано с тем, что PHP оставляет недопустимые управляющие символы как есть. \s
, в отличие от \t
, является недопустимым управляющим символом и поэтому остается на месте.
Вторая строка, однако, будет буквально содержать то, что находится в одинарных кавычках, поскольку оценка не применяется.