3
我曾經有這個代碼塊來模擬某種的BBCode的棄用:preg_replace函數的/ e修飾符使用數組作爲圖案和替換
$pattern = array(
'/\\n/',
'/\\r/',
'/\[list\](.*?)\[\/list\]/ise',
'/\[b\](.*?)\[\/b\]/is',
'/\[strong\](.*?)\[\/strong\]/is',
'/\[i\](.*?)\[\/i\]/is',
'/\[u\](.*?)\[\/u\]/is',
'/\[s\](.*?)\[\/s\]/is',
'/\[del\](.*?)\[\/del\]/is',
'/\[url=(.*?)\](.*?)\[\/url\]/ise',
'/\[email=(.*?)\](.*?)\[\/email\]/is',
'/\[img](.*?)\[\/img\]/ise',
'/\[color=(.*?)\](.*?)\[\/color\]/is',
'/\[font=(.*?)\](.*?)\[\/font\]/ise',
'/\[bg=(.*?)\](.*?)\[\/bg\]/ise',
'/\[size=(.*?)\](.*?)\[\/size\]/ise'
);
$replace = array(
'<br/>',
'',
'$this->sList(\'\\1\')',
'<b>\1</b>',
'<strong>\1</strong>',
'<i>\1</i>',
'<span style="text-decoration: underline;">\1</span>',
'<span style="text-decoration: line-through;">\1</span>',
'<span style="text-decoration: line-through;">\1</span>',
'$this->urlfix(\'\\1\',\'\\2\')',
'<a href="mailto:\1" title="\1">\2</a>',
'$this->imagefix(\'\\1\')',
'<span style="color: \1;">\2</span>',
'$this->fontfix(\'\\1\',\'\\2\')',
'$this->bgfix(\'\\1\',\'\\2\')',
'$this->sizefix(\'\\1\',\'\\2\')'
);
return preg_replace($pattern, $replace, nl2br(stripslashes($string)));
但我移動到PHP 5.5,我收到錯誤在這裏,它曾經很好地工作,這是錯誤回報我得到:
推薦使用:的preg_replace():本/ e修飾符已過時,使用 preg_replace_callback相反在
我嘗試了幾個東西,但迄今沒有任何工作。
這是我試過到目前爲止代碼:
return preg_replace_callback(
$pattern,
function($matches) use ($replace) {
return ((isset($replace[$matches[0]])) ? $replace[$matches[0]] : '');
},
nl2br(stripslashes($string))
);
我一直在讀左右,但大多數的例子都涉及到基本替換,在這裏我有兩個數組。
請通知有一些方法正在從$ replace區域中調用。
我該如何解決這個問題?這是正確的方法嗎?
轉到http://stackoverflow.com/questions/21334934/deprecated-preg-replace-the-e-modifier-is-deprecated-use-preg-replace-call鏈接 – WisdmLabs
我有點麻煩理解你試圖做什麼。是否你試圖在'use'部分傳遞兩個數組? – Quixrick
不,它只是一個數組。我只是期待着和以前一樣的結果。 – Lucas