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 回答