Разбор одного столбца CSV, разделенного ~ HEADER @ - PullRequest
0 голосов
/ 21 октября 2011

У меня есть файл 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 ]

0 голосов
/ 21 октября 2011

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".

0 голосов
/ 21 октября 2011

Если я правильно понимаю ваш вопрос и формат, категории, разделенные ~, и каждая из них указана как "SomeString@Category Name", то это должно помочь.Однако я не думаю, что это имеет какое-либо отношение к формату CSV.

$pairs = explode('~', $string);
$cats = array();
foreach ($pairs as $pair) {
    list($cat_number, $cat_name) = explode('@', $pair);
    $cats[] = $cat_name;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...