Учитывая, что в качестве входных данных у вас есть эти данные:
$str = <<<STR
OK: 0; Sent queued message ID: e3674786a1c5f7a1 SMSGlobalMsgID:6162865783958235
OK: 0; Sent queued message ID: 9589936487b8d0a1 SMSGlobalMsgID:6141138716371692
STR;
Решением будет explode
этой строки в отдельных строках:
$lines = explode("\n", $str);
Правка после комментария и правка ОП
Учитывая, что данные, которые вы получаете, находятся только в одной строке, вам нужно будет найти другой способ разбить их (я думаю, что проще разбить данные и работать с «строками», которые работают с большим массивом данных сразу) .
Учитывая, что данные, которые вы получаете, выглядит следующим образом:
$str = <<<STR
OK: 0; Sent queued message ID: e3674786a1c5f7a1 SMSGlobalMsgID:6162865783958235 OK: 0; Sent queued message ID: 9589936487b8d0a1 SMSGlobalMsgID:6141138716371692
STR;
Полагаю, вы могли бы разбить его на "строки", используя preg_split
, используя такое регулярное выражение, как этот:
$lines = preg_split('/SMSGlobalMsgID: (\d+) /', $str);
Если вы попытаетесь вывести содержимое $lines
, оно выглядит вполне нормально - и теперь вы сможете перебирать эти строки.
Затем вы начинаете с инициализации массива $output
как пустого:
$output = array();
И теперь вам нужно перебрать строки начального ввода, используя магию регулярных выражений в каждой строке:
См. Документацию preg_match
и Regular Expressions (Perl-Compatible)
для получения дополнительной информации
foreach ($lines as $line) {
if (preg_match('/^(\w+): (\d+); Sent queued message ID: ([a-z0-9]+) SMSGlobalMsgID:(\d+)$/', trim($line), $m)) {
$output[] = array_slice($m, 1);
}
}
Обратите внимание на части, которые я захватил, используя ()
И, в конце концов, вы получите массив $output
:
var_dump($output);
Это выглядит так:
array
0 =>
array
0 => string 'OK' (length=2)
1 => string '0' (length=1)
2 => string 'e3674786a1c5f7a1' (length=16)
3 => string '6162865783958235' (length=16)
1 =>
array
0 => string 'OK' (length=2)
1 => string '0' (length=1)
2 => string '9589936487b8d0a1' (length=16)
3 => string '6141138716371692' (length=16)