1
我試圖瞭解preg_replace_callback
函數。在我的回調中,我得到了匹配的字符串兩次,而不是一次出現在主題字符串中。你可以將go here and copy/paste this code加入到測試程序中,並且當我期望的時候它會返回兩個值。preg_replace_callback返回重複值
preg_replace_callback(
'"\b(http(s)?://\S+)"',
function($match){
var_dump($match);
die();
},
'http://a'
);
輸出看起來像這樣:
array(2) { [0]=> string(8) "http://a" [1]=> string(8) "http://a" }
的documentation mentions返回一個數組如果受試者是一個數組,或字符串否則。發生了什麼?
爲什麼's'不是以加括號的捕獲組的形式返回的? – smilebomb
你的主題字符串不是's',而你有一個'?'使得該組可選。如果將括號內的「?」移動,該組將始終存在,但根據其是否存在而爲空或「s」。 –
哦,我在這裏交換我自己的代碼和示例代碼。我的錯。 – smilebomb