2013-06-28 40 views
0

看这一段代码:如何提高preg_match_all输出结构?

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

$ _POST [ '回复']值是 “你好[用户] pooya [/用户]和[用户]扎赫拉[/用户]”,但$的结构匹配是数组中的数组!像这样:

Array 
(


    => Array 


     (


    => pooya 
       [1] => zahra 
      ) 

     [1] => Array 
      (

    => pooya 
    [1] => zahra 
      ) 

    ) 

有没有什么窍门来组织输出preg_match_all?例如一个标签值作为数组元素的简单数组?

+0

您可以通过不断缩进输出显著改善它(做你的代码看起来像=))。 – AD7six

回答

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']; 

OK你读过这: 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]是一个完整模式匹配的数组,$匹配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"; 
    ?> 
+0

我只想提取用户标记中的名字并遍历它们,所以我使用了preg_match_all,但结果是完全非结构化的。 – Pooya

+0

好的我提供了上面的链接,可能会帮助你理解preg_match_all()函数的用法。 – Reign

+0

用户标记来自哪里? – Reign