PHP如何取消字符串?

时间:2014-11-13 19:16:03

标签: php

我知道PHP会输出一个字符串。但我不明白为什么

echo "\\\/";

生成结果

\\/

有人有想法吗?

4 个答案:

答案 0 :(得分:1)

嗯,我想最容易理解的方法是查看一个视图示例:

echo "/"; = /
echo "//"; = //
echo "///"; = ///

echo "\"; = syntax error
echo "\\"; = \
echo "\""; = "
echo "\\\" = syntax error
echo "\\\/"; = \\/

为什么呢?好\用于转义。最后一个示例是使用\\/转义\ \/。虽然/不需要任何转义但它不会受到伤害。

您可能想知道echo "\\\"失败的原因。但是如果你密切关注,你会发现\\没问题但是第三个\被认为是字符串末尾的"的转义,这显然是不应该得到的转义因此语法错误。

答案 1 :(得分:0)

反斜杠是PHP字符串文字中的特殊字符。它用于转义字符。例如,如果要在带引号的字符串中编写引号,则需要对其进行转义以避免语法模糊/不正确:

echo "\""; // (Because otherwise, WTF exactly would """ mean?!)

由于反斜杠是一个特殊字符,因此需要一种方法使其“非特殊”以避免其特殊属性。如果要在字符串中写入单个反斜杠,则需要将其转义:

echo "\\"; // (Because "\" would be a syntax error, since the " would be escaped.)

所以在"\\\/"中,有一个转义反斜杠(\\\),然后又有一个反斜杠。由于第二个(第三个)反斜杠后面没有任何模糊字符,因此它只是按原样(即\/并不意味着什么特别的,所以它只是意味着“\ /”)。所以你在该字符串中有三个实际字符:\\/

请注意,这将是语法错误:

echo "\\\";

因为第一对是一个反斜杠,后跟\",后者是转义",然后没有“真实”"后来结束字符串。

答案 2 :(得分:0)

如果\后面的字符不代表a valid escape sequence,那么它将保持原样。

模式\\是一个有效的转义序列,因此它被替换为单个\ 模式\/ 是一个有效的转义序列,所以它不为人所知。

答案 3 :(得分:0)

反斜杠字符有多种用途。首先,如果它后跟一个非字母数字字符,它会消除角色可能具有的任何特殊含义。这种反斜杠作为转义字符的使用适用于内部和外部字符类。

例如,如果要匹配“*”字符,则在模式中写入“*”。这适用于以下字符是否会被解释为元字符,因此在非字母数字之前加上“\”来指定它代表自身总是安全的。特别是,如果要匹配反斜杠,请编写“\”。

注意: 单引号和双引号PHP字符串具有反斜杠的特殊含义。因此,如果\必须与正则表达式\匹配,则必须在PHP代码中使用“\\”或“\\”。