如何改进preg_match_all输出结构?

时间:2013-06-28 17:05:07

标签: php preg-match

看看这段代码:

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

$ _ POST ['reply']值是“Hello [user] pooya [/ user]和[user] zahra [/ user]”但是$ match的结构是数组中的数组!类似的东西:

 Array
(


    => Array


        (


    => pooya
                [1] => zahra
            )

        [1] => Array
            (

    => pooya
    [1] => zahra
            )

    )

是否有任何组织preg_match_all输出的技巧?例如,一个简单的数组,其中标记值为数组的元素?

1 个答案:

答案 0 :(得分: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";
  ?>