unexpected T_FUNCTION error when using "function (array $matches)"

28,034

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.

Share:
28,034

Related videos on Youtube

Mike
Author by

Mike

Updated on July 09, 2022

Comments

  • Mike
    Mike almost 2 years

    Hi I'm using the following code but I'm getting an "unexpected T_FUNCTION" syntax error for the second line. Any suggestions?

    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