【发布时间】:2010-02-11 15:09:58
【问题描述】:
好的,这个用英文很难解释,所以我就举个例子吧。
我将有以下格式的字符串:
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; 对。
【问题讨论】:
标签: php regex preg-match