Использование функции PHP explode()
У меня проблема, я хочу разделить строковую переменную с помощью функции разнесения, но есть ограничение, представьте, что у вас есть следующая строковая переменная со следующим значением:
$data = "3, 18, 'My name is john, i like to play piano'";
Используя функцию разнесения: разнесите (",", $данные), вывод будет:
array(
[0] => 3,
[1] => 18,
[2] => 'My name is john,
[3] => i like to play piano'
);
Моя цель состоит в том, чтобы разделить переменную $data запятой, исключая те, которые находятся между "'-чатами.
Например. array(
[0] => 3,
[1] => 18,
[2] => 'My name is john, i like to play piano'
);
Если кто-нибудь подскажет мне, как это сделать, я буду благодарен.
3 answers
Это скорее похоже на данные CSV. Вы можете использовать str_getcsv для анализа этого.
var_dump(str_getcsv("3, 18, 'My name is john, i like to play piano'", ',', "'"));
Должно привести к:
array(3) {
[0] =>
string(1) "3"
[1] =>
string(3) " 18"
[2] =>
string(12) "My name is john, i like to play piano"
}
Вы можете также применить trim
к каждому из элементов массива, используя array_map
:
$string = "3, 18, 'My name is john, i like to play piano'";
var_dump(array_map('trim', str_getcsv($string, ',', "'")));
Использовать: str_getcsv
// set the delimiter with ',', and set enclosure with single quote
$arr = str_getcsv ($data, ',', "'");
Вы можете использовать функцию str_getcsv() как:
$data = "3, 18, 'My name is john, i like to play piano'";
$pieces = str_getcsv($data, ',', "'");
Первым аргументом функции является разделяемая строка.
Второй аргумент - это разделитель, на котором вам нужно разделить.
И третий аргумент - это один символ, который при использовании в качестве пары (неэкранированный) внутри первого аргумента будет обрабатываться как одно поле, эффективно игнорируя разделители между этой парой.