Я хочу проанализировать строку значений, разделенных запятыми, в массив. Я хочу попробовать str_getcsv()
php, но я не могу найти никаких хороших примеров того, как ее использовать.
Например, у меня есть вход, где пользователи отправляют теги для языков программирования (php, js, jquery и т. Д.), Например, входные теги в stackoverflow при отправке вопроса.
Как включить ввод с примером value="php, js, jquery"
в массив с помощью str_getcsv?
Это правда, что спецификация на http://us3.php.net/manual/en/function.str-getcsv.php не включает стандартный пример, но примечания, представленные пользователем, прикладывают достойную работу по ее покрытию. Если это ввод формы:
$val = $_POST['value']; $data = str_getcsv($val);
$data
теперь представляет собой массив со значениями. Попробуйте и посмотрите, есть ли у вас какие-либо другие проблемы.
Думаю, вам стоит взглянуть на взрыв в этой задаче.
$values = "php, js, jquery"; $items = explode(",", $items); // Would give you an array: echo $item[0]; // would be php echo $item[1]; // would be js echo $item[2]; // would be jquery
Это, вероятно, более эффективно, чем str_getcsv ();
Обратите внимание, что вам нужно будет использовать trim () для удаления возможных пробелов и после значений элементов.
ОБНОВИТЬ:
Я раньше не видел str_getcsv, но прочитал эту цитату на man-странице, которая заставила бы ее выглядеть достойным кандидатом:
Почему бы не использовать explode () вместо str_getcsv () для разбора строк? Поскольку explode () не будет обрабатывать возможные вложенные части строки или экранированные символы правильно.
Для простоты и удобочитаемости я обычно использую just explode (), добавляя только str_getcsv (), если выполняются следующие два условия: 1) основной разделитель также используется внутри самих данных; 2) токен, который я пытаюсь использовать в качестве основного разделителя, заключен в другой отдельный символ.
Например, базовый синтаксический анализатор для файла CSV:
$filename = $argv[1]; if (empty($filename)) { echo "Input file required\n"; exit; } $AccountsArray = explode("\n", file_get_contents($filename));
Пока каждый из элементов $ AccountsArray не встраивает «,» внутри самих данных, это будет работать отлично и просто и просто:
foreach ($AccountsArray as $entry) { $acctArr = explode(",", $entry); }
Однако часто данные будут содержать разделитель, в этот момент должен присутствовать прилагаемый токен (в этом примере). Если это так, то я переключаюсь на str_getcsv () следующим образом:
foreach ($AccountsArray as $entry) { $acctArr = str_getcsv($entry, ",", "\""); }
//get the csv $csvFile = file_get_contents('test.csv'); //separate each line $csv = explode("\n",$csvFile); foreach ($csv as $csvLine) { //separet each fields $linkToInsert = explode(",",$csvLine); //echo what you need //$linkToInsert[0] would be the first field, $linkToInsert[1] second field, etc echo '• ' . $linkToInsert[1] . '<br>'; }