我使用preg_match
得到2个结果,我不明白为什么。这是我的代码:
$pattern = "\[precom\]([A-Za-z]|\(|\)|[0-9]|\s|\*)*\[\/precom\]";
$data = "[precom](homme) Cher monsieur $name[/precom] ";
preg_match("/" . $pattern . "/", $data, $m);
print_r($m);
结果如下:
Array ( [0] => [precom](homme) Cher monsieur *name[/precom] [1] => e )
有人可以帮我找到问题吗?
答案 0 :(得分:4)
您不应该使用正则表达式解析HTML(或BBCode等)。试试:
$input = '[precom](homme) Cher monsieur $name[/precom]';
$dom = new DOMDocument();
$dom->loadHTML(str_replace(array('[', ']'), array('<', '>'), $input));
$output = $dom->textContent;
var_dump($output);
输出:
string '(homme) Cher monsieur $name' (length=27)
答案 1 :(得分:2)
来自http://www.php.net//manual/en/function.preg-match.php
如果提供了匹配,那么它将填充搜索结果。 $ matches [0]将包含与完整模式匹配的文本,$ matches [1]将具有与第一个捕获的带括号的子模式匹配的文本,依此类推。