如何区分“一些文字”和“一些文字”?

时间:2011-01-29 07:52:08

标签: php string

如果我有两个变量:

$v1 = "some text";
$v2 = 'some test';

是否可以识别哪个字符串变量是使用单引号定义的,哪一个是使用双引号?

5 个答案:

答案 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)

您无法看到哪个字符串是使用哪个文字创建的。但是文字的解释方式存在一些差异:

http://dev.fyicenter.com/faq/php/php_string_operation.php