是否需要转义(反斜杠)路径?

时间:2013-11-21 05:35:23

标签: php string path escaping backslash

在程序或脚本的代码中,必须将路径放到字符串中的文件或目录中并不罕见。这通常不是* nix系统上路径的问题,因为它们使用正斜杠,通常不需要在大多数语言中进行转义,但Windows使用反斜杠作为通常需要的路径以大多数语言逃脱。

使用C(++),你通常必须转义字符串中路径的斜杠,因为如果不这样做,大多数编译器都会发出警告,但我看到了其他代码,特别是PHP脚本,逃避它们。例如,我已经看到了无数的配置文件示例,其中包含与此类似的行:

static $storageDir = 'C:\webgrind\tmp';

表面上你必须逃避这样的路径,我确实认为它们可能是那些实际上没有使用Windows的人,只是简单地将配置数据从Linux推送到Windows而没有实际测试,但如果是这样,那么代码应该失败,但它似乎经常有用。

那么你必须在代码中转义字符串中的路径吗?我主要是在问PHP,因为我个人认为这是最常见的,但我也对其他/通用答案持开放态度。

3 个答案:

答案 0 :(得分:2)

PHP中的单引号字符串不需要双重转义。不像双引号字符串,单个反斜杠后面的小写字母可能会造成麻烦。

但是在单引号字符串中,反斜杠仍然可以自行转义

'abc\\abc' == 'abc\abc'

答案 1 :(得分:2)

特别说到路径,正斜杠也会这样做

'C:/webgrind/tmp'

答案 2 :(得分:1)

单引号会禁止\\\'以外的所有转义序列,因此除非它在字符串文字中显示为最后一个字符,否则无需转义它们中的反斜杠。