2013-10-01 176 views
1

我正在使用PHP eregi函數,但我收到它已被棄用的通知。這裏是我的代碼:使用preg_match函數的PHP錯誤

!eregi("^[A-Z0-9._%-][email protected][A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email'])) 

所以我想替換爲的preg_match的功能,但目前看來,我無法得到的的preg_match正確的模式,因爲我得到的錯誤與下面的代碼:

!preg_match("^[A-Z0-9._%-][email protected][A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email'])) 

這是我從上面的代碼中出現錯誤:

Warning: preg_match(): No ending delimiter '^' found in 

感謝您的幫助。

+0

把/在正則表達式的開始和結束 –

+0

你需要使用一個特殊的字符,如:〜(\ w +)〜和flags go here來包含正則表達式代碼。 –

+0

這絕對不是引用問題的重複。這是關於更新PHP和preg_match替換eregi。 –

回答

2

您需要界定您的正則表達式:

preg_match("/^[A-Z0-9._%-][email protected][A-Z0-9._%-]+\.[A-Z]{2,4}$/", 
      ^          ^
1

試試吧,

!preg_match("/^[A-Z0-9._%-][email protected][A-Z0-9._%-]+\.[A-Z]{2,4}$/i", trim($_POST['email'])) 

必須使用分隔符/

2

preg_match()希望你在正則表達式字符串的開頭或結尾使用分隔符:

preg_match("/^[A-Z0-9._%-][email protected][A-Z0-9._%-]+\.[A-Z]{2,4}$/", trim($_POST['email'])) 

分隔符可以是幾個字符,包括~%#/,@等等。請注意,當您選擇分隔符時,如果該字符在正則表達式中使用,則必須使用反斜槓字符(\)進行轉義。例如,使用正則表達式

http://[0-9a-z]+\.com 

與分隔符/的組合,會要求你逃跑的/每一次出現:

/http:\/\/[0-9a-z]+\.com/ 

更多信息,請參見PHP manual