Я разбираю CSV-файл с fgetcsv
. Я получил CSV-экспорт из установки Magento. Однако это не объяснимо. Вот одна проблематична линия такого экспорта:Заменить дюймы и другие кавычки в CSV, если не следовать или предшествует запятая
200000, Samsung Galaxy S2, $ 399.00,8806085359376, нуль, свободная земля перевозка груза, новое, в наличии, Samsung, "Vivid‧Fast‧Slim Новый GALAXY SII Plus делает вашу жизнь еще более умной! 4.3 "SUPER AMOLED Plus 4.3" SUPER AMOLED Plus дисплей выходит за рамки уже замечательного SUPER AMOLED, чтобы обеспечить улучшенную читаемость, более тонкую конструкцию и лучшее потребление энергии для наилучшего просмотра любого смартфона. -Touch Размер дисплея: 4.3 "Разрешение: 480 x 800pixel Платформа Платформа: Android v4.1 (Jelly Bean) TOUCHWiZ v4.0 Пользовательский интерфейс (до 7 страниц рабочего стола виджета) Band^UMTS (850/900/1900/2100 МГц) + Емкость аккумулятора: 1650 мАч ", мобильный телефон> Производитель> Samsung,
Проблема заключается в использовании "
в файле в виде короткой руки для inch
и других случаев.
Я ищу RegEx для preg_replace
каждой двойной кавычки, за которой не следует или предшествует запятая. Однако мои знания RegEx плохие, и я не могу создать рабочее выражение. Это то, что я думаю, что довольно близко к решению, но я не могу заставить его работать:
private static function _fixQuotesInString($string)
{
return preg_replace('/(?<!,)"|"(?!,)/', '"', $string);
}
Как я, с моим ограниченным знанием, будет читать это, я бы сказал: Если вы нашли двойные кавычки, проверьте, не предшествует ли ему запятая или не запятая, и если да, замените ее на ". Однако опыт показывает, что это не так.
Когда вы публикуете решение, было бы неплохо, если бы вы могли добавить «речевое объяснение» в RegEx, чтобы я мог его понять.
Что вы будете делать с этим текстом: «отличный случай, 4.3», samsung « – boisvert
Если вы посмотрите на это, это довольно сложно исправить, так как экспорт явно не придерживается * вообще *, как CSV должен выглядит как. Не проще ли исправить проблему у источника? – Joey
@boisvert Этот худший случай сломает его в любом случае. Я просто хочу сделать из плохой работы. Если ни при каких обстоятельствах не будет восстановлено, пользователю будет предложено исправить его экспорт. Фиксация источника будет невозможна. Старые Magentos экспортируют, как это, и многие используют его. Я просто прошу RegEx обойти прогулку по каждому персонажу, отметив, что это «и правила использования закрытых или закрытых специальных символов». – SebiF