为什么这两个函数的输出不同?

时间:2009-06-04 14:19:31

标签: php string

$value = '\\40';
file_put_contents('o.txt',$value);
file_put_contents('o2.txt',var_export($value,true));


D:\test>php str.php
D:\test>cat o.txt
\40
D:\test>cat o2.txt
'\\40'

5 个答案:

答案 0 :(得分:1)

var_export($value, true)返回字符串声明值'\\40',而只有$value返回该声明的解释值,因此\40

答案 1 :(得分:0)

因为var_export输出或返回变量的可解析字符串表示

http://de.php.net/manual/en/function.var-export.php

您的代码完美无缺。 ;)是否符合预期。

答案 2 :(得分:0)

$ value的值是'\ 40'(即反斜杠,四,零)。当你输入它时,这就是你得到的。

var_export为您提供有效的PHP代码,您需要反斜杠反斜杠,就像您在第一行代码中所做的那样。

这有意义吗?

答案 3 :(得分:0)

因为var_export的输出是经过编码的,所以您可以将结果放入PHP文件并包含它或将其传递给eval调用。 o.txt显示$ value = \ 40。但是如果你要说$ x = eval(file_get_contents('o2.txt')); x也会= \ 40。

答案 4 :(得分:0)

$ value ='\ 40';

真的意思是'\ 40',第一个“\”逃脱了第二个。

var_export - 输出或返回变量的可解析字符串表示

var_export添加“\”,以便进行转义和解析:

'\\40'