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 に答える