Хорошо, это действительно сложно объяснить по-английски, поэтому я просто приведу пример.
У меня будут строки в следующем формате:
key-value;key1-value;key2-...
и мне нужно извлечь данные в массив
array('key'=>'value','key1'=>'value1', ... )
Я планировал использовать регулярные выражения для достижения (большей части) этой функциональности и написал следующее регулярное выражение:
/^(\w+)-([^-;]+)(?:;(\w+)-([^-;]+))*;?$/
для работы с preg_match
и этим кодом:
for ($l = count($matches),$i = 1;$i<$l;$i+=2) {
$parameters[$matches[$i]] = $matches[$i+1];
}
Однако регулярное выражение, очевидно, возвращает только 4 обратных ссылки - первую и последнюю пары ключ-значение входной строки. Это можно обойти? Я знаю, что могу использовать регулярные выражения только для проверки правильности строки и использовать PHP explode
в циклах с отличными результатами, но мне действительно интересно, возможно ли это с помощью регулярных выражений.
Короче говоря, мне нужно захватить произвольное количество этих key-value;
пар в строке с помощью регулярных выражений.