2016-06-26 69 views
0
$ent_check = empty($modSettings['disableEntityCheck']) ? 
    array('preg_replace_callback(\'~(&#(\d{1,7}|x[0-9a-fA-F]{1,6});)~e\', \'$func[\\\'entity_fix\\\'](\\\'\\2\\\')\', ', ')') : 
    array('', ''); 

Warning: preg_replace_callback(): Requires argument 2, '$func['entity_fix']('\2')', to be a valid callback in...preg_replace_callback():需要參數2是一個有效的回調

我不太清楚在這裏做什麼。從別人比我聰明的將不勝感激任何幫助......

回答

2

第一個問題在這裏的意圖。那麼,傳遞給preg_replace_callback($arg1, $arg2...)第二個參數是有望得到贖回。這就是爲什麼你有這個錯誤。在那裏你與你的代碼去,但也許下面的代碼可能拋出更多的光線,並幫助你重新審視要麼/澄清你的問題,目的+目標或重新考慮你的代碼目前還不清楚。試想一下:

<?php 
    $string   = "&#2510 whatever &#5870 again whatever &#7885"; 
    $modSettings = array('disableEntityCheck'=>array()); 
    $func   = array(
     "fix_stuff"  => function($param=20){ echo $param;}, 
     "do_stuff"  => function($param=10){ echo $param;}, 
     "entity_fix" => function($matches){ return $matches[0] . "YES!!! ";}, 
    ); 

    $ent_check = empty($modSettings['disableEntityCheck']) ? array(preg_replace_callback('#\d#', $func['entity_fix'], $string)) : array('', ''); 
    var_dump($ent_check); 

    // DISPLAYS 
    array (size=1) 
     0 => string '&#2YES!!! 5YES!!! 1YES!!! 0YES!!! whatever &#5YES!!! 8YES!!! 7YES!!! 0YES!!! again whatever &#7YES!!! 8YES!!! 8YES!!! 5YES!!! ' 

注意,在上面的代碼中,傳遞給preg_replace_callback第二個參數是一個函數雖然通過爲參考到陣列的「entity_fix」鍵:$ FUNC。這是爲了強調這樣一個事實,即也可以通過這種方式傳遞第二個參數。我們希望,這在這裏給你一個小祕密揭開序幕;-)

好運!

相關問題