如果我有两个变量:
$v1 = "some text";
$v2 = 'some test';
是否可以识别哪个字符串变量是使用单引号定义的,哪一个是使用双引号?
答案 0 :(得分:4)
没有。你也不应该关心。
答案 1 :(得分:1)
不,没有办法做到这一点。一旦分配了字符串,就完成了,你以后就无法检查。
但是,如果你真的真的想要,你可以有一个数组来存储如何分配字符串,但你必须自己更新该数组。像这样:
$v1 = "some text";
$info['v1'] = true;
$v2 = 'some test';
$info['v2'] = false;
在这里,您可以稍后检查$ info数组的值。如果这是真的,你用双引号单行引号。 然而,我无法理解这件事的实际用途。这完全没用。
答案 2 :(得分:1)
没有办法这样做,尝试找出它是没有意义的。
从文件或用户输入读取的字符串怎么样?如何将双引号字符串附加到单引号字符串中?什么样的报价风格会产生什么?当一个整数被转换为字符串时,什么样的引号会围绕它?
答案 3 :(得分:1)
嗯。如果你的任务是通过静态分析找出它,而不是运行时分析(这是不可能的),你可能应该使用Tokenizer并分析文件的令牌流,看看相应的T_VARIABLE
是否合适分配了'"'
或T_CONSTANT_ENCAPSED_STRING
。如果变量是插值的,前者将发生,后者如果不是。如果您想区分"
和'
,请不要在插值/非插值之间进行区分,您应该检查T_CONSTANT_ENCAPSED_STRING
与'
和"
的第一个字符。
虽然我很确定,但在接受采访时没有人想知道这一点。 Tokenizer真的很高,很少有人知道,它不会在标准的面试中;)
答案 4 :(得分:0)
您无法看到哪个字符串是使用哪个文字创建的。但是文字的解释方式存在一些差异: