2012-03-10 105 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