2013-06-20 57 views
0

我新的PHP和我試圖創建一個BB碼,但它給了我這個錯誤:的preg_replace():沒有結束符「@」發現

Warning: preg_replace(): No ending delimiter '@' found

我做的代碼:

function bbCode($str){ 
    $values = array(
        '@\[b]\(.*?)\[\/b]\@i' => '<b>$1</b>', 
        '@\[i]\(.*?)\[\/i]\@i' => '<em>$1</em>' 

        ); 
        return preg_replace(array_keys($values), array_values($values), $str); 
} 

它有什麼問題?

+0

'@ \ [B \] \ [/ B \] @ i'應該作品 – Lake

+0

你知道'@'和'的區別\ @'? –

回答

0

您使用\@逃避最後的@符號,因此php將@解釋爲文字@而不是分隔字符。

編輯:(。*?)

function bbCode($str) 
{ 
    $values = array(
     '@\[b\](.*?)\[\/b\]@i' => '<b>$1</b>', 
     '@\[i\](.*?)\[\/i\]@i' => '<em>$1</em>' 

    ); 
    return preg_replace(array_keys($values), array_values($values), $str); 
} 
+0

如果我這樣做,它給了我其他錯誤:preg_replace():編譯失敗:不匹配的括號 –

+0

嘗試我編輯的解決方案 – Novocaine

+1

它不是沒有[記錄](http://es1.php.net/preg_replace) :*'pattern' - 要搜索的模式。它可以是一個字符串,也可以是一個帶有字符串的數組。* –