2013-05-02 47 views
0

我是正則表達式的新手。PHP preg_match如何從字符串開始「charcter =」並以「&」結尾

我有:

$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 

我不能使用爆炸或類似的命令,因爲參數字符串中的位置不固定。

謝謝!

回答

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 
+0

。但是這很漂亮。現在想要找到它的用途。 – EnigmaRM 2013-05-02 16:35:47

+0

太棒了!謝謝。輸出是29-31 48-46,47(加號缺失),但這沒有問題。 – netoper 2013-05-02 16:39:21

+0

@glirpi - 這是因爲查詢字符串中的「+」意味着空間。 – nickb 2013-05-02 16:42:00

相關問題