Использование функции 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' );

Если кто-нибудь подскажет мне, как это сделать, я буду благодарен.

Author: oletob, 2012-10-19

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, ',', "'")));
 8
Author: cmbuckley, 2012-10-19 15:54:37

Использовать: str_getcsv

// set the delimiter with ',', and set enclosure with single quote
$arr = str_getcsv ($data, ',', "'");
 6
Author: xdazz, 2012-10-19 15:49:52

Вы можете использовать функцию str_getcsv() как:

$data = "3, 18, 'My name is john, i like to play piano'";
$pieces = str_getcsv($data, ',', "'");

Первым аргументом функции является разделяемая строка.

Второй аргумент - это разделитель, на котором вам нужно разделить.

И третий аргумент - это один символ, который при использовании в качестве пары (неэкранированный) внутри первого аргумента будет обрабатываться как одно поле, эффективно игнорируя разделители между этой парой.

 5
Author: codaddict, 2012-10-19 15:54:54