PHP preg_match如何从字符串开始“character =”并以“&”结尾

时间:2013-05-02 16:28:36

标签: php preg-match

我是正则表达式的新手。

我有:

$str = 'manufacturer=1,2,3&brand=5,4&filter=29-31+48-46,47&price=150-700';
$find = 'filter'; // for example. it can also be a price or brand or something

if (strpos($str, $find) !== FALSE)
{
$matches = array();
preg_match('/' . $find . '=???/', $str, $matches);
var_dump($matches);
}

???表示,我必须使用什么正则表达式以及我如何使用preg_match单独解析此字符串数据,如:

[0] = 29-31+48-46,47 // data parsed from "filter=" to "&" character

我无法使用explode或类似命令,因为字符串中参数的位置不固定。

感谢!

1 个答案:

答案 0 :(得分:3)

不要使用正则表达式,这是错误的工具。使用parse_str()

$str = 'manufacturer=1,2,3&brand=5,4&filter=29-31+48-46,47&price=150-700';
parse_str( $str, $array);
echo $array['filter']; 

prints

29-31 48-46,47