私は最近、自分のサイトをPHP 5.6に更新しました。それ以来、私はe
修飾子でエラーを出し始めました。配列を含むpreg_replace_callback
は、ここで問題を引き起こし機能である:
function blockPrepareDisplay() {
static $search = array('/(.)@(.)/se');
static $replace = array('"&#" .sprintf("%03d", ord("\\1")) .";@&#" .sprintf("%03d", ord("\\2")) . ";";');
$resarray = array();
foreach (func_get_args() as $var) {
$var = htmlspecialchars($var, ENT_QUOTES);// Prepare var
$var = preg_replace($search, $replace, $var);
$var = preg_replace('/&#/', '&#', $var);
$var = str_replace(" "," ",$var);
$var = str_replace("&","&",$var);
$resarray[] = $var;// Add to array
}
if (func_num_args() == 1) {// Return vars
return $resarray[0];
} else {
return $resarray;
}
}
私は$search = array('/(.)@(.)/se');
静的行がe
修飾子を持つ行があることを理解し、私はその非推奨のことを知っています。友人はそれを私に説明し、preg_replace
をpreg_replace_callback
に置き換える必要があることを説明しました。私はphp.netとここまでのところを見てきましたが、それは私がこれまでよりももっとconfuesdを作ったと思います。
私は数週間前からさまざまなことを試みてきましたが、エラーを吐くのをやめさせてもらえましたが、私は間違っていると肯定的です。私はにpreg_replace
$var = preg_replace_callback(
$search,
function($replace){
foreach($replace as $replaces){
return $replaces;
}
},
$var
);
代わりの$var = preg_replace($search, $replace, $var);
の代わりにこれをしました。 また、e修飾子も削除しました。誰かが私の間違いを指摘して、これを正しいものにする方法を例に挙げることができますか?