errore T_FUNCTION imprevisto quando si utilizza "function (arrays $ corrisponde)"

Ciao Sto usando il seguente codice, ma sto ricevendo un errore di syntax "T_FUNCTION imprevisto" per la seconda row. Eventuali suggerimenti?

preg_replace_callback("/\\[LINK\=(.*?)\\\](.*?)\\[\/LINK\\]/is", function (arrays $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"; }, $text); 

Ciò accade quando il tuo PHP è più vecchio di 5.3. Il supporto della function anonima non era disponibile fino al 5.3, quindi PHP non riconoscerà le firme di funzioni passate come parametri simili.

Dovrai creare una function nel modo tradizionale e passare il suo nome link_code() ad esempio, uso link_code() ):

 function link_code(arrays $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); 

Inoltre, le corrispondenze di arrays $matches non sono un problema perché il tipo di suggerimento per gli arrays è supportto in PHP 5.2.