1

我有来自用户的输入字符串。用户的这种输入是不可预测的。这意味着用户可以随意输入任何字符串。我想过滤匹配以下模式的输入并将其作为数组返回

以下这些字符串模式应该有效:

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);
4

1 回答 1

1

你不需要正则表达式,你可以这样做:

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

将输出

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

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

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

)

我将把错误检查/输入卫生留给 OP。

于 2013-03-25T20:18:22.660 回答