0

助けてください。締め切りが厳しいため、すぐに解決しなければならないケースがあります.. :( これを解決するために preg_match または preg_split を使用するアイデアがあり、それを使用する方法をたくさん試しましたが、まだ使用方法がわかりませんこのケースについて誰かが私を案内してくれるので、preg_matchまたはpreg_splitの使用方法についてより理解を深めることができます。

// この文字列から

$temp = "{foo:bar,bar:foo},{_id:1,nama:1,nim:1}";

//結果がこのようになるように配列に割り当てる方法

Array
(
[0]=>foo:bar,bar:foo
[1]=>_id:1,nama:1,nim:1
)

// 2 番目の文字列も

$temp2 = "_id:1,nama:1,nim:1";

//結果がこのようになるように配列に割り当てる方法

Array
(
[0] => _id
[1] => nama
[2] => nim
)

あなたの指導と助けをありがとう.. :)

4

2 に答える 2

0

キーと文字列が引用符で囲まれ、[ ]$temp が配列になっていることに注意してください。2 番目の部分ではarray[1]、json 文字列に変換してから配列に戻し、array_keys を使用してキーの配列を作成します。

$temp = '{"foo":"bar","bar":"foo"},{"_id":1,"nama":1,"nim":1}';
$temp = "[$temp]";
$array = json_decode($temp);

$keys = array_keys(json_decode(json_encode($array[1]), true));

json_encode json_decode array_keys

于 2012-06-17T06:14:57.617 に答える
0

コード:

<?php

$str1 = "{foo:bar,bar:foo},{_id:1,nama:1,nim:1}";
preg_match_all('/\{(.+?)\},?/', $str1, $matches);
var_dump($matches[1]);

$str2 = "_id:1,nama:2,nim:3";
preg_match_all('/(\w+)\:\w+,?/', $str2, $matches);
var_dump($matches[1]);

?>

結果:

array
  0 => string 'foo:bar,bar:foo' (length=15)
  1 => string '_id:1,nama:1,nim:1' (length=18)
array
  0 => string '_id' (length=3)
  1 => string 'nama' (length=4)
  2 => string 'nim' (length=3)

参照:

説明:

  1. まず、どの関数を使用するかを決定する必要があります。マニュアルが言ったように:

    preg_match()パターンマッチの回数を返します。最初の一致後に検索を停止するため、それは0時間 (一致なし) または時間のいずれかになります。それどころか、件名の最後に到達するまで続きます。エラーが発生した場合に返します 。1preg_match()preg_match_all()preg_match()FALSE

    preg_split()pattern に一致する境界に沿って分割されたサブジェクトの部分文字列を含む配列を返します。

    あなたの目標は中括弧の間のコンテンツをキャプチャすることなので preg_match_all、タスクを簡単に処理することにしました。もちろん、あなたは preg_split難しい方法でそれを行うことができます:)

  2. パターンに来てください: それはすべて正規表現に関するものです
    1. \{(.+?)\},?: 一対の中括弧内のコンテンツをキャプチャします。+のような空のブレースをスキップするスタンド{}。空のペアをいくつか入れ{}$str1、に変更+して*、何が起こるか見てみましょう。?非貪欲を指定するマークも。fromの+?ようなものは必要ありませんが、単独で必要であることを意味します。コンマがあるかどうかを意味します。foo}{bar{foo}{bar}foobar,?
    2. (\w+)\:\w+,?key:ペアで捉えますkey:value

この助けを願っています:)

于 2012-06-17T11:03:20.610 に答える