2014-05-05 54 views
0

次數我要尋找的自定義HTML標籤:PHP preg_replace_callback捕撈多於一個符合

$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 

我試着將nongreedy的結尾標記組合起來:/$tag(.*)($tag?)/,結果相同。

+0

既然是當(?:X | H) TML標籤曾被另一個開標籤關閉? – tenub

回答

1

你需要讓.*非貪婪通過.*?

/<tag>(.*?)<tag>/ 

$tag<tag>,這意味着$tag?成爲<tag>?捕捉<tag<tag>

+0

這是很好的答案。 –