匹配字符串中的多个匹配项

时间:2012-03-10 15:13:31

标签: php regex

我正在使用preg_match在模板文件中查找标记名称。

目前我最接近的是:

preg_match('/\{db:(.*)\}/',$haystack,$found);

适用于这样的字符串:

<a href="index.php?view=products&cat={db:id}">Test</a>

它就像我期待的那样给我id。但是,当使用多次出现的字符串时,例如:

<a href="index.php?view=products&cat={db:id}">{db:name}</a>

它返回给我id}">{db:name,而不是我期待的idname

我哪里错了?

1 个答案:

答案 0 :(得分:2)

您需要添加(.*)字符来使? 非贪婪,否则它将占用尽可能多的字符。像这样:

preg_match('/\{db:(.*?)\}/', $haystack, $found);