我有来自用户的输入字符串。来自用户的这种输入是不可预测的。这意味着用户可以随意输入任何字符串。 我想过滤匹配以下模式的输入并将其作为数组返回
以下字符串模式应该有效:
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 :(得分: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。