簡體   English   中英

如何使用預先存在的 function 為 preg_replace_callback 的回調 function 正確傳遞參數?

[英]How do pass the parameters properly for a callback function for preg_replace_callback using a preexisting function?

我收到此錯誤:解析錯誤:語法錯誤,意外''(T_ENCAPSED_AND_WHITESPACE),期望標識符(T_STRING)或變量(T_VARIABLE)或數字(T_NUM_STRING)............ eval()'d代碼第 2 行自從從正則表達式中刪除 e 后, ~<IF (. ?)(?<.-)>(. ?)~se 如下行所示,因為它已被棄用。

$template['template_html'] = preg_replace('~<IF (.*?)(?<!\-)>(.*?)</IF>~se', '$this->get_templates_callback(\'\\1\', \'\\2\', $template[\'template_name\'])', $template['template_html']);

我知道我需要使用 preg_replace_callback() 並使用匿名 function 重寫但是我在重寫它時遇到了麻煩,因為 $this->get_templates_callback() 也需要被調用和執行。

    function get_templates_callback($condition, $code, $piece)
{
    $macro_id = isset($this->macro[$piece]) ? count($this->macro[$piece]) : 0;
    $this->macro[$piece][$macro_id] = '$macro_replace[' . $macro_id . '] = ((' . $condition . ') ? "' . $code . '" : ""); ';
    return '{' . chr(36) . 'macro_replace[' . $macro_id . ']}';
}

我應該如何正確地 go 關於正確地將參數傳遞到這個 function 中?

您可以使用use statement來傳遞其他參數。

function (array $matches) use ($condition, $code, $piece)
{
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM