массивы — Регулярное выражение в PHP fgetcsv

В моем коде есть цикл, в котором я хочу извлечь только первое, пятое и шестое число из массива, который выглядит следующим образом:

Array ( [0] => 12403;644;20;46;5;285;;;; )

В настоящее время я пытаюсь использовать регулярные выражения для извлечения этих чисел (в этом случае мне нужно получить 12403, 5 и 285).

$contents = fgetcsv($handle);
preg_match('/^(\d+);\d+;\d+;\d+;(\d+);(\d+);*.$/', $contents, $match);
echo "first capture group: " . $match[0] . "\nsecond capture group: " . $match[1] . "\nthird capture group: " . $match[2];

Это печатает пустые переменные. Зачем? Можете ли вы помочь?

0

Решение

$ content — это массив, preg_match нужна строка Так и должно быть:

preg_match('/^(\d+);\d+;\d+;\d+;(\d+);(\d+);*.$/', $contents[0], $match);

Затем группы захвата начинаются с 1; $match[0] соответствует всему регулярному выражению Так и должно быть:

echo "first capture group: " . $match[1] . "\nsecond capture group: " . $match[2] . "\nthird capture group: " . $match[3];

Но более простым решением было бы использовать правильный разделитель при вызове fgetcsv()таким образом, это разделит линию для вас — вот и весь смысл использования fgetcsv() вместо fgets(),

$contents = fgetcsv($handle, ';');
echo "first capture group: " . $contents[0] . "\nsecond capture group: " . $contents[4] . "\nthird capture group: " . $contents[5];
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]