Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Проблема с экранированием символа \ при чтении из файла
Форумы портала PHP.SU » » Работа с файловой системой и файлами » Проблема с экранированием символа \ при чтении из файла

Страниц (1): [1]
 

1. Programir - 24 Августа, 2015 - 17:26:57 - перейти к сообщению
Доброго времени!

Столкнулся со странностью при чтении файла функцией fgetcsv.

Опишу подробнее.

Есть сгенерированный командой openfiles список открытых файлов в формате csv с разделением значений запятой и ограничением данных двойными кавычками.
Он прекрасно парситься функцией fgetcsv. НО как только встречается строка вида:
"2952807424","teo","Windows","D:\Data\MOW\RF-UnitRuMow\"
то \" парситься как экранированная двойная кавычка и на выходе получается такая строка:
D:\Data\MOW\RF-UnitRuMow\" 2885833728"

и естественно "съедается" перенос строки (он попадает внутрь строки и съедается).

Игрался с параметрами:
php_flag magic_quotes_gpc off
php_flag magic_quotes_runtime off
php_flag magic_quotes_sybase off

ничего не меняется... phpinfo() показывает что локально эти настройки меняются, но ничего в логике не меняется.

Не знаю уже в какую сторону копать. Есть конечно мысль свою функцию написать ибо это не так сложно, но хочется понять можно-ли этот косяк исправить?

Спасибо!
2. DelphinPRO - 24 Августа, 2015 - 18:00:47 - перейти к сообщению
строка должна быть такая
"2952807424","teo","Windows","D:\\Data\\MOW\\RF-UnitRuMow\\"
она спарсится. хотя openfiles не блещет настройками..

в частном случае можно поменять символ экранирования, на другой. Последний параметр функции fgetcsv.
3. Programir - 25 Августа, 2015 - 09:56:12 - перейти к сообщению
DelphinPRO пишет:
строка должна быть такая
"2952807424","teo","Windows","D:\\Data\\MOW\\RF-UnitRuMow\\"
она спарсится. хотя openfiles не блещет настройками..

в частном случае можно поменять символ экранирования, на другой. Последний параметр функции fgetcsv.


О! Спасибо за подсказку! С изменённым символом экранирования все заработало!
Не видел раньше этого параметра...


ЗЫ Как поставить спасибо если недостаточно сообщений?

 

Powered by ExBB FM 1.0 RC1