1

key1value1key2value2 の連結された文字列を分割しようとしています 問題は、それらがどの順序であるかを知ることができないことです

$k = preg_split("/(name|age|sex)/", "nameJohnage27sexM");
var_dump($k);
$k = preg_split("/(sex|name|age)/", "age27sexM");
var_dump($k); 

したがって、年齢または名前が $k の 1 番目または 2 番目のインデックスになるかどうかはわかりません。「名前」キーが文字列に含まれているかどうかもわかりません。キーのセットが限られている可能性があります。

実行する方法?

編集:このように解決された、tx mario

for ($i=1, $n=count($k)-1; $i<$n; $i+=2) {
    $s[$k[$i]] = $k[$i+1];
}
var_dump($s);
4

1 に答える 1

1

このやや不器用なパターンは、キーと値のリストを返します。

/(?:(name|age|sex)(.+?(?=(?:name|age|sex|\z))))/g

したがって、「nameJohnage27sexM」で上記を使用した preg_match は配列を返す必要があります

["name", "John", "age", "27", "sex", "MAN"]

これにより、上記の要素を繰り返し処理して配列 ["name" => "John", ...] を作成できます。

于 2012-06-04T22:31:42.600 に答える