0

このコードを見てください:

preg_match_all('/\[user\](.*?)\[\/user\]/' , $_POST['reply'] , $match);

$_POST['reply'] の値は「Hello [user]pooya[/user] and [user]zahra[/user]」ですが、$match の構造は配列内の配列です! 何かのようなもの:

 Array
(


    => Array


        (


    => pooya
                [1] => zahra
            )

        [1] => Array
            (

    => pooya
    [1] => zahra
            )

    )

preg_match_all の出力を整理するコツはありますか? たとえば、配列の要素としてタグ値を持つ単純な配列ですか?

4

1 に答える 1

1

結果は多次元配列のように見えます。この配列から値を多次元のまま引き出すことができます。次のようなものを試してください:

  echo $yourVariable[2] ['pooya'];

あなたの配列は静かに正しく構造化されていないようですが。

次のように構成することもできます。

$pooya = array (

 array(

 "group"=>"pooya",
 "name"=>"zarah"),

 array(
 "group"=>"Pooya",
 "name"=>"Zarah"
 )

 );

 echo $pooya[0] ['group'];

 echo $pooya[1] ['name'];

これを読んだことがありますか: http://php.net/manual/en/function.preg-match-all.php

preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags =        PREG_PATTERN_ORDER [, int $offset = 0 ]]] )

PREG_PATTERN_ORDER $matches[0] が完全なパターン一致の配列、$matches 1が最初の括弧で囲まれたサブパターンに一致する文字列の配列などになるように結果を並べ替えます。

 <?php
 preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
     "<b>example: </b><div align=left>this is a test</div>",
     $out, PREG_PATTERN_ORDER);
  echo $out[0][0] . ", " . $out[0][1] . "\n";
  echo $out[1][0] . ", " . $out[1][1] . "\n";
  ?>
于 2013-06-28T17:54:48.307 に答える