2013-02-21 55 views
0

我想驗證一個字符串包含正則表達式,並且它是一個有效的PHP。通常情況下,我會以下列方式驗證正則表達式而不拋出警告

<?php 
@preg_match($string, '') !== false; 

這將生成一個警告,因爲我們使用@壓制它這是很好的做到這一點。然而,當我們使用set_error_handler來捕捉錯誤時會出現問題,因爲處理程序仍然會被觸發,儘管存在@抑制器。

我想做一些類似於提供的代碼,而不會引發警告。

拋出的警告是:

preg_match(): Delimiter must not be alphanumeric or backslash 
+0

你說「要發現錯誤」,你的意思是例外?如果是這樣,只需將'preg_match'調用包裝在try/catch塊中。 – 2013-02-21 20:53:09

+0

preg_match不會引發異常,它只會產生PHP錯誤。 – Nathaniel 2013-02-21 20:54:02

回答

3

只是在你的錯誤處理程序補充一點:

function user_error_handler($severity, $msg, $filename, $linenum, $content) { 
    if (0 == (error_reporting() & $severity)) return; 
    ... 
} 

在這種情況下,由於@運營商,error_reporting()將返回0