看看这段代码:
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输出的技巧?例如,一个简单的数组,其中标记值为数组的元素?
答案 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";
?>