#php #regex #character #explode
#php #регулярное выражение #символ #взорваться
Вопрос:
/* Отредактировано, чтобы иметь смысл! */
У меня 900 строк этого:
;745;ref;name;Adress;zipcode;;mobphone;;;;;;;;;
я хочу 900 строк этого:
array(
'',
745,
'ref',
'name',
'adress',
'zipcode',
'',
'mobphone'
etc..
)
Некоторые строки, похоже, объединены в одну, поэтому получается одна длинная вместо двух коротких. Мне нужно использовать функцию PHP split () для разделения строк после каждого 16-го символа с запятой, вот с чем мне нужна ваша помощь.
Комментарии:
1. @querty: Пожалуйста, точно опишите ввод и вывод в строке. Вы ожидаете получить массив
[(empty), 745, ref, name, Adress, zipcode, (empty), mobphone, (empty), (empty),...]
?
Ответ №1:
Я не знаю, поможет ли это вам, но PHP уже содержит функциональность, которая позволяет вам анализировать CSV-файл. fgetcsv()
Функция будет читать CSV-файл построчно. Возвращает массив, содержащий значения каждого поля в текущей строке.
В вашем случае вам нужно было бы указать ему использовать точку с запятой вместо запятой в качестве разделителя поля.
$fp = fopen('file.csv', 'r');
while ($line = fgetcsv($fp, 0, ';')){
$firstField = $line[0];
$secondField = $line[1];
//...
}
Комментарии:
1. @qwerty На самом деле, я думаю, это именно то, что вы ищете. Я был ленив и не прочитал весь вопрос — я просто увидел «CSV» и «split()» и подумал, что могу предложить вам «fgetcsv()».
2. Хаха, ну ты был прав! Я ожидал ту же ошибку, но это действительно сработало! Намного надежнее, чем использование split() или explode(). Спасибо!
Ответ №2:
Взгляните на explode:http://php.net/manual/en/function.explode.php
Комментарии:
1. Я использовал explode () раньше и анализировал его при каждом переносе строки, но это работало не так, как ожидалось. Мне нужно использовать split (), но мне нужна помощь с регулярным выражением..