看起来PHP在fgetcsv或str_getcsv中存在双引号和转义问题 .

这是命令行中的一个简单示例:

$ echo '"\"test\""' | php -r '$t=file_get_contents("php://stdin"); print "input: ".$t."\noutput: ".str_getcsv($t)[0];'

结果:

input: "\"test\""
output: \"test\"

预期结果:

input: "\"test\""
output: "test"

我希望输出是不同的,因为外部引号括起引号,内部引号被转义 . 不应将转义字符传送到输出 .

为什么PHP解释这个不同,什么是强大的解决方案?