PHP - 转义反斜杠不起作用

时间:2013-12-21 14:51:33

标签: php wamp

好的标题总结了它。如果我这样做:

fwrite($handle, 'test\r\ntest');

我写 litreally 写入文件。那就是:

test\r\ntest

它不适用于echo或任何其他函数操作字符串。

当我需要使用ESC / POS写入串口中的打印机时,这就成了问题。如果我使用PHP,它会打印出一堆问题makrs和法语characteres。使用Python(加上pyserial),使用以下代码,效果惊人:

from __future__ import print_function
import serial

ser = serial.Serial('COM4');

ser.write('\x1b\x40');
ser.write('\x0a');
ser.write('\x0a');
ser.write('Hello there');
ser.write('\x0a');
ser.write('\x1d\x56\x42\x03');

我的系统: Windows 7 Home Basic x64上的WAMP 2.4(PHP 5.4.16,Apache 2.4.4)

3 个答案:

答案 0 :(得分:5)

要使用反斜杠符号来转义特殊字符,您需要使用双引号字符串,而不是单引号字符串,请尝试以下操作:

fwrite($handle, 'test\r\ntest'); // not working
fwrite($handle, "test\r\ntest"); // works as expected

值得注意的是,如果您的数据来自其他来源(非PHP文件,Web表单),则可能完全跳过该问题,并且仅当您在脚本文件中对字符串进行硬编码时才会发生此问题。有关详细信息,请随时浏览相关手册页:

http://www.php.net/manual/en/language.types.string.php

答案 1 :(得分:4)

使用单引号将字面上写出你的字符串。 要使用转义字符,您需要使用双引号:

echo "This output will \n expand"; 

http://www.php.net/manual/en/language.types.string.php

答案 2 :(得分:2)

尝试使用"代替'来获取这些转义序列:

fwrite($handle, "test\r\ntest");