2

我遇到了 PHP 处理器看起来很奇怪的边缘情况。根据PHP手册:

PHP 中的变量由一个美元符号后跟变量名表示。变量名区分大小写。

变量名称遵循与 PHP 中其他标签相同的规则。有效的变量名称以字母或下划线开头,后跟任意数量的字母、数字或下划线。

我见过的极端情况是紧跟在美元符号后面的字符不是字母或下划线(或其他一些会调用特殊含义的元字符组合,例如第二个美元符号)。这是一个例子:

$someVariable = "This is a $(test of our edge case).";

我可以用语句输出这个变量,并且单词testecho之前的美元符号显示没有问题(不需要转义)。据我所知,PHP 不会抛出任何错误或警告。所以现在我的问题是:这是处理器语法中的一个极端情况吗?它是一个错误吗?还是我忽略了其他一些解释?

我很清楚,作为一种良好的编程习惯,当想要打印所述字符(或者可以简单地使用单引号字符串)时,应该始终在双引号字符串中转义美元符号。我只是好奇为什么这种情况下不一定需要在美元符号之前转义。

4

1 回答 1

3

不,没有错误消息没有错误。PHP 只会在双引号括起来的字符串内展开有效变量。

如果您熟悉正则表达式,您可以将其视为 PHP 将双引号字符串的内容与以下表达式匹配:

\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
于 2012-01-15T01:01:19.673 回答