2

preg_match次の行に沿って何かを処理できるPHP の正規表現が必要です。

variable1=true&variable2=1,2,3&variable3="test"&variable4!=true&variable5!=4,5,6&variable!="test"

私はjsonのようなものに変更しますが、これは私が必要とする後方互換性をサポートしません。

/((\w+)(=|!=)("\w+"|true|false|\d+)*)/

これは部分的に成功しています。どんな助けも素晴らしいでしょう。

4

2 に答える 2

3

文字列関数の使用

$string = 'variable1=true&variable2=1,2,3&variable3="test"&variable4!=true&variable5!=4,5,6&variable!="test"';
$pairs = explode('&', $string);
foreach ($pairs as $pair) {
    if (strstr($pair, '!=')) {
        list($key, $value) = explode('!=', $pair);
    } else {
        list($key, $value) = explode('=', $pair);
    }
    $values[$key] = $value;
}

コードパッドで出力を表示する

このコードは、最初に を使用して文字列を分割し、&キーと値のペアに分割します。その後、各ペアをループし、最初に を使用して再度分割を試み、!=それが失敗した場合は を使用し=ます。


正規表現の使用

preg_match_all('/((\w+)(=|!=)("\w+"|true|false|[\d\,]+)*)/', $string, $matches);

括弧を追加し、[...]コンマ\dをエスケープしました\,

于 2012-06-19T12:10:45.517 に答える
3

実際にはparse_str、まさにこの目的のための組み込み関数があります。ここでは正規表現は必要ありません。

于 2012-06-19T12:18:15.287 に答える