2013-06-28 39 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