2013-03-25 55 views
1

我有來自用戶的輸入字符串。來自用戶的這種輸入是不可預測的。這意味着用戶可以隨意輸入任何字符串。 我想篩選匹配下列模式的輸入,並返回它作爲一個數組從字符串中獲取參數並將其轉換爲數組php

以下這些字符串模式應該作品:

product=bag, product=tshirt, product=shoes 

product=bag status=sold, product=jeans, product=shoes 

product=all 

我會像輸出如陣列如下:

Array(
[0] => Array 
    (
    [product] => bag 
    [status] => sold 
) 

[1] => Array 
    (
    [product] => jeans 
) 

[2] => Array 
    (
    [product] => shoes 
) 
) 

我想這可以通過在explode旁邊使用preg_match_all()來實現。任何人都可以使用preg_match_all給我例子嗎?或者任何其他方式對我來說都是好的,只要是最好的方法。

$string = 'product=bag status=sold, product=tshirt, product=shoes'; 
$m = preg_match_all('/needregexrulehere/', $string, $matches); 
+0

uhhhh ....什麼? – jeremy 2013-03-25 20:03:33

+0

@ethrbunny對不起,但他沒有使用** e **修飾符:) – HamZa 2013-03-25 20:09:34

+0

澄清:這應該是php函數不是命令行,上面的所有參數都是在變量中定義的。重點是我只是將上面的數組分割爲上面的輸出。讓我知道你是否需要更多澄清。 thx – 2013-03-25 20:21:00

回答

1

你並不需要爲這個正則表達式,你可以做這樣的事情:

$return = array(); 
foreach(str_getcsv($string) as $line) { 
    parse_str(str_replace(' ' , '&', $line), $temp); 
    $return[] = $temp; 
} 

will output

Array 
(
    [0] => Array 
     (
      [product] => bag 
      [status] => sold 
     ) 

    [1] => Array 
     (
      [product] => tshirt 
     ) 

    [2] => Array 
     (
      [product] => shoes 
     ) 

) 

我會離開的錯誤檢查/輸入衛生直到OP。

+0

+1不錯,我打算用爆炸()和preg_match()xD – HamZa 2013-03-25 20:22:21

+0

寫一個解決方案感謝它的工作! – 2013-03-25 20:38:50

相關問題