2013-02-21 56 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