полоса выпадает, когда персонаж после двух обратных косых черт - PullRequest
0 голосов
/ 23 января 2012

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

У меня есть $q = "This is\\same text";, а у меня

$q = stripslashes($q);

Итак, $q теперь равно "This issame text"! Как я могу сохранить одну обратную косую черту?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 23 января 2012

Сценарий делает то, что ему говорят, на самом деле.

В $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, является недопустимым управляющим символом и поэтому остается на месте.

Вторая строка, однако, будет буквально содержать то, что находится в одинарных кавычках, поскольку оценка не применяется.

0 голосов
/ 23 января 2012

Если вы хотите, чтобы один обратный слеш остался там, удвойте его

$q = "This is\same \\ text";

$q = stripslashes($q);

становится

This issame \ text
0 голосов
/ 23 января 2012

На самом деле

$q = "This is\\same text";

содержит одну обратную косую черту.

...