两个反斜杠后的字符时出现striplashes问题

时间:2012-01-23 16:09:59

标签: php stripslashes

我知道这是一个愚蠢的问题,但我不能为了解决我的问题而谷歌。

我有$q = "This is\\same text";并且

$q = stripslashes($q);

所以,$q现在等于"This issame text"!我怎么能保存一个反斜杠?

谢谢。

3 个答案:

答案 0 :(得分:2)

脚本实际上是这样做的。

$q中,双反斜杠计算为单个反斜杠(第一个反斜杠转义),然后将其剥离。

如果不评估元字符,您需要使用单引号:

$q = 'This is \\some text';
// String is now: This is \\some text

$q = stripslashes($q);
// String is now: This is \some text

编辑 根据您在Michaels的回答中的评论,您输入中有多少有效反斜杠可能会有一些混淆。请考虑以下输入:

$q1 = "This is\\\some \text";
$q2 = 'This is\\\some \text';

第一个实际包含This is \\some <TAB>ext。这是因为PHP按原样保留了无效的控制字符。与\s相对的\t是一个无效的控制字符,因此保留在原位。

然而,第二个字符串在字面上会包含单引号中的内容,因为不会应用任何评估。

答案 1 :(得分:0)

实际上

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

包含一个反斜杠。

答案 2 :(得分:0)

如果你想要那个反斜杠应该留在那里,加倍他

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

$q = stripslashes($q);

成为

This issame \ text