Php 将目录_分隔符与trim()一起使用是否安全

Php 将目录_分隔符与trim()一起使用是否安全,php,cross-platform,Php,Cross Platform,有这样的东西安全吗: rtrim($pathToSomeDirectory, DIRECTORY_SEPARATOR); 我担心的是,Windows系统的反斜杠目录分隔符是否会被视为屏蔽字符?查看功能“rtrim”的手册(见下文)列出了要修剪的字符: 如果没有第二个参数,rtrim()将删除以下字符: “”(ASCII 32(0x20)),一个普通空格 “\t”(ASCII 9(0x09)),一个选项卡 “\n”(ASCII 10(0x0A)),一个新行(换行符) “\r”(ASCII 13

有这样的东西安全吗:

rtrim($pathToSomeDirectory, DIRECTORY_SEPARATOR);

我担心的是,Windows系统的反斜杠目录分隔符是否会被视为屏蔽字符?

查看功能“rtrim”的手册(见下文)列出了要修剪的字符:

如果没有第二个参数,rtrim()将删除以下字符:

  • “”(ASCII 32(0x20)),一个普通空格
  • “\t”(ASCII 9(0x09)),一个选项卡
  • “\n”(ASCII 10(0x0A)),一个新行(换行符)
  • “\r”(ASCII 13(0x0D)),回车符
  • “\0”(ASCII 0(0x00)),空字节
  • “\x0B”(ASCII 11(0x0B)),一个垂直选项卡

假设您指的是被解释为转义字符的反斜杠,让我们看看以下代码:

var_dump(DIRECTORY_SEPARATOR)
var_dump('\\')
上述代码将在Windows操作系统上产生以下结果:

string(1) "\"
string(1) "\"
这有助于在Windows操作系统上安全使用目录分隔符的参数,其中需要文字反斜杠,例如要修剪的参数(或其变体rtrim)


我已经在一个已经有六年历史的PHP版本(即PHP5.2.10)上对此进行了测试,目录分隔符被视为“\”(而不是“\”,这是一个未终止的字符串)。

对不起,但它如何回答我的问题?啊,我应该为此受到强烈反对。我真的没有回答。首先,你说的“安全”到底是什么意思?它应该从右边修剪所有这些和分隔符(取决于系统),直到碰到不是这些的东西并停止。我会先在开发人员或非活动机器上测试它,以确保它能满足您的需求。我不太确定你在找什么。我的问题是,在Windows系统上,
DIRECTORY\u SEPARATOR
是否会被视为屏蔽反斜杠。我很确定它会被视为一个字符,就像在Windows和GNU/Linux系统上一样。看看哪个显示它被替换为该字符的字符串,这与在代码中键入“\\”(在Windows上)时的情况非常相似。这回答了问题吗?那么你的意思是我问题中的示例将删除Windows系统上的尾随斜杠?