Захват повторяющихся шаблонов регулярных выражений в PHP - PullRequest
1 голос
/ 16 октября 2010

У меня есть шаблон

ab 23 cde 25 ... and so on

Могу ли я захватить вышеуказанный шаблон как

array(
 [patterns] => array(
   [0] => array(
    [payer] => 'ab'
    [amt] => 23
   )
   [1] => array(
    [payer] => 'cde'
    [amt] => 25
   )
 )
)

Возможно ли это?

Ответы [ 3 ]

2 голосов
/ 16 октября 2010

Для этого можно использовать preg_match_all:

$str = 'ab 23 cde 25';
preg_match_all('/(\w+)\s+(\d+)/',$str,$matches);
$result = array();
for($i=0;$i<count($matches[0]);$i++) {
        $result[] = array('payer' => $matches[1][$i], 'amt' => $matches[2][$i]);
}

Рабочая ссылка

0 голосов
/ 16 октября 2010
(?:'|.)(\w+)(?:'|$)
0 голосов
/ 16 октября 2010

Сформируйте регулярное выражение для соответствия каждому элементу в вашем массиве (\w+\s+\d+). Соберите их все (это должно дать вам куски вроде ab 23).

Затем для каждого из этих элементов разбейте пробел и втисните в свой большой массив как [payer], [amt].

...