Разбор одного столбца CSV, разделенного ~HEADER@
У меня есть файл CSV, который нуждается в дополнительной обработке. Я получил большинство наших пользовательских функций. Мое застрявшее на данный момент последнее дополнение к ленте, несколько категорий в 1 столбце. Вот краткий пример новой настройки поля.
Category01@Things~Category01@Will~Category01@Be~Category01@Here~Category02@Testing~Category02@More text here~Category02@Any data~Category02@No more data for this category~LastCategory@This~LastCategory@Is~LastCategory@The~LastCategory@End
Мне нужно построить массив на PHP из каждой доступной категории, аналогично;
$category01 = array('Things', 'Will', 'Be', 'Here');
Любая помощь будет принята с благодарностью. Спасибо!
2 ответа
Gahhh. очки, они ничего не делают!
Если вы не можете изменить эту форму вывода (и она ДОЛЖНА быть изменена на что-то более приятное), вам придется использовать грубую силу:
$csv = '...';
$categories = array();
$parts = explode('~', $csv);
foreach($parts as $part) {
$bits = explode('@', $part);
$category = (int)substr($part[0], 8);
if (!is_array($categories[$category])) {
$categories[$category] = array();
}
$categories[$category][] = $part[1];
}
Конечно, это взорвется на вашем LastCategory
вещи в хвостовой части этого "CSV". так что... позвольте мне снова НАСТОЯТЕЛЬНО убедить вас исправить все, что генерирует этот так называемый "CSV" в первую очередь.
Если я правильно понимаю ваш вопрос и формат, категории разделены ~
и каждый перечислен как "SomeString@Category Name"
, то это должно подвох. Однако я не думаю, что это имеет какое-либо отношение к формату CSV.
$pairs = explode('~', $string);
$cats = array();
foreach ($pairs as $pair) {
list($cat_number, $cat_name) = explode('@', $pair);
$cats[] = $cat_name;
}