PHP反斜杠转义

时间:2014-01-24 18:21:10

标签: php escaping quotes backslash

$backslash = '\\\\';
echo $backslash.$backslash;

会打印两个反斜杠,而我希望它能打印四个。

另外,

$backslash = '\\';
echo $backslash.$backslash;

只能打印一个。

为什么?


修改 抱歉浪费你的时间。
问题是我实际上并没有echo它,而是将存储的值返回到变量$escaped中,然后我做了其他事情,这实际上导致了问题。

2 个答案:

答案 0 :(得分:3)

这是预期的。 ' - 引用的字符串只有两个元字符,需要在其中进行转义:'\'必须被转义,或者你提前终止字符串,因为\本身就是转义字符,所以它也必须被转义。

e.g。

<?php
$foo = '\\\';
echo $foo;

执行时会产生:

PHP Parse error:  syntax error, unexpected T_ENCAPSED_AND_WHITESPACE in test.php on line 3

因为前两个\相互转义,在字符串中成为单个文字\,第三个\转义',导致字符串运行在该行的末尾,并使该字符串的echo $foo PART

我无法重现你的第二个例子。 $foo = '\\';将为字符串分配一个SINGLE反斜杠,并且由于您要将变量打印两次,因此应该输出\\作为输出。


跟进:使用此代码:

$two_slashes = '\\';
$four_slashes = '\\\\';
echo $two_slashes . $two_slashes . "\n";
echo $four_slashes . $four_slashes . "\n";

我明白了:

\\
\\\\

作为输出,如预期的那样。这是在PHP 5.3.3(Redhat enterprise 65.3)

答案 1 :(得分:0)

$backslash = '\\\\';
echo $backslash.$backslash;

输出= \\\\

$backslash = '\\';
echo $backslash.$backslash;

输出= \\

问题是什么?