Intereting Posts

неожиданная ошибка T_FUNCTION при использовании функции (array $ matches) "

Привет, я использую следующий код, но я получаю синтаксическую ошибку «неожиданного T_FUNCTION» для второй строки. Какие-либо предложения?

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

Related of "неожиданная ошибка T_FUNCTION при использовании функции (array $ matches) ""

Это происходит, когда ваш PHP старше 5.3. Поддержка анонимных функций не была доступна до 5.3, поэтому PHP не распознает сигнатуры функций, переданные как такие параметры.

Вам нужно будет создать функцию традиционным способом и вместо этого передать свое имя (например, я использую link_code() ):

 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); 

Кроме того, array $matches не является проблемой, потому что тип hinting для массивов поддерживается в PHP 5.2.