2015-09-09 5 views
1

Взгляните на этом примере кода:fputcsv неожиданное поведение

$store = array('This is something \" "special"!', 'Something else "special"!'); 
$ff = fopen('/tmp/aaaa.csv', 'w'); 
fputcsv($ff, $store); 
fclose($ff); 

Это дает в результате этого:.

"This is something \" ""special""!","Something else ""special""!" 

Что беспокоит меня, что \»остается без изменений, я бы ожидать, что она стать \ «» или по крайней мере «» Я ошибаюсь?

в любом случае такое поведение ломает CSV, так как, например, отказывается от PostgreSQL импортировать такой файл CSV ...

+0

Чтобы уточнить, я использую Ubuntu 14.04 64bit и PHP 5.5.9 –

+3

http://php.net/manual/en/function.fputcsv.php вы видите дополнительные параметры, которые вы можете добавить? –

ответ

0

Функция fputcsv по умолчанию отменяет символ обратной косой черты. Вы можете проверить в руководстве $escape_char = "\"

Если вы не хотите, чтобы избежать обратной косой черты, то вы можете указать другой символ, как показано ниже:

fputcsv($ff, $store, ',', '"', '!'); 

Это даст вам желаемый результат.

+0

К сожалению, мне тоже нужно работать в Php 5.4. Fputcsv не имеет этого параметра в этих версиях ... –

+0

Я согласен с этим в качестве ответа, поскольку другое решение не доступно для старых версий php, кроме написания пользовательского fputcsv. –