2012-03-10 72 views
1

我正在使用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,我很期待。

我哪里错了?

回答

2

您需要通过添加?角色作出了(.*)非贪婪,或者它会占用尽可能多的字符,因为它仍然可以匹配。像这样:

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

是的,似乎是那么我必须使用'preg_match_all'而不是'preg_match'。谢谢! – budwiser 2012-03-10 15:26:15