$backslash = '\\\\';
echo $backslash.$backslash;
会打印两个反斜杠,而我希望它能打印四个。
另外,
$backslash = '\\';
echo $backslash.$backslash;
只能打印一个。
为什么?
修改
抱歉浪费你的时间。
问题是我实际上并没有echo
它,而是将存储的值返回到变量$escaped
中,然后我做了其他事情,这实际上导致了问题。
答案 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;
输出= \\
问题是什么?