PHP preg_replace_callback在行中捕获多个匹配项

时间:2014-05-05 19:59:31

标签: php regex preg-replace-callback

我搜索自定义HTML标记:

$match = preg_replace_callback("/<tag>(.*)<tag>/", function ($key) {
    $result = getTxt($key[1]);

    return $result;
}, $buffer);

输入为:

时有效
Abc <tag>1<tag> efg

但为什么它会返回null

Abc <tag>2<tag> ef <tag>3<tag> h

我尝试将不同的结尾标记:/$tag(.*)($tag?)/分组,结果相同。

1 个答案:

答案 0 :(得分:1)

您需要通过.*

制作.*?非贪婪
/<tag>(.*?)<tag>/

$tag<tag>,这意味着$tag?变为<tag>?,其中<tag<tag>