That happens when your PHP is older than 5.3. Anonymous function support wasn't available until 5.3, so PHP won't recognize function signatures passed as parameters like that.
You'll have to create a function the traditional way, and pass its name instead (I use link_code()
for example):
function link_code(array $matches) {
if (filter_var($matches[1], FILTER_VALIDATE_URL))
return '<a href="'.
htmlspecialchars($matches[1], ENT_QUOTES).
'" target="_blank">'.
htmlspecialchars($matches[2])."</a>";
else
return "INVALID MARKUP";
}
preg_replace_callback("/\[LINK=(.*?)\](.*?)\[/LINK\]/is", 'link_code', $text);
Also, array $matches
is not a problem because type hinting for arrays is supported in PHP 5.2.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…