好的,这真的很难用英语解释,所以我只举一个例子。
我将有以下格式的字符串:
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 个反向引用——输入字符串的第一个和最后一个键值对。有没有解决的办法?我知道我可以使用正则表达式来测试字符串的正确性并explode
在循环中使用 PHP 以获得完美的结果,但我真的很好奇它是否可以使用正则表达式。
简而言之,我需要key-value;
通过正则表达式在字符串中捕获任意数量的这些对。