Простой вопрос, разделенные запятыми идентификаторы для массива в PHP 5.2 - PullRequest
1 голос
/ 07 декабря 2009

У меня есть строка идентификаторов, разделенных запятыми, и мне нужен быстрый способ разбить их на массив. Я знаю, что могу жестко закодировать это, но это просто грубо и бессмысленно.

Я вообще ничего не знаю о регулярных выражениях, и я не могу найти ПРОСТОГО примера в Интернете, только огромные учебники, пытающиеся научить меня овладевать регулярными выражениями за 2 часа или около того.

fgetcsv применим только для файла, а str_getcsv доступен только в PHP 5.3 и выше.

Итак, я собираюсь написать это от руки или есть что-то, что сделает это для меня? Я бы предпочел простое решение регулярных выражений с небольшим объяснением того, почему оно делает то, что делает.

Ответы [ 4 ]

7 голосов
/ 07 декабря 2009
$string = "1,3,5,9,11";
$array = explode(',', $string);

См. explode()

Возвращает массив строк, каждая из которых является подстрокой строки, образованной разбиением ее по границам, образованным разделителем строк.

2 голосов
/ 07 декабря 2009

Если вы хотите просто разделить запятыми:

$values = explode(",", $string);

Если вы также хотите избавиться от пробелов вокруг запятых (например: ваша строка 1, 3, 5)

$values = preg_split('/\s*,\s*/', $string)

Если вы хотите, чтобы в строке были запятые, когда они заключены в кавычки (например: first, "se,cond", third)

$regex = <<<ENDOFREGEX
            /  "  ( (?:[^"\\\\]++|\\\\.)*+ ) \"
             | '  ( (?:[^'\\\\]++|\\\\.)*+ ) \'
             | ,+
            /x
ENDOFREGEX;
$values = preg_split($regex, $string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
2 голосов
/ 07 декабря 2009

Простое регулярное выражение должно сработать.

$a_ids = preg_split('%,%', $ids);
2 голосов
/ 07 декабря 2009

Есть проблемы с нормальной функцией разделения?

$array = split(',', 'One,Two,Three');

даст вам

Array
(
  [0] => One
  [1] => Two
  [2] => Three
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...