我正在尝试验证字符串是否包含正则表达式,并且它在PHP中是有效的。通常,我会按以下方式执行此操作
<?php
@preg_match($string, '') !== false;
这会生成一个警告,这很好,因为我们使用@
来抑制它。但是,当我们使用set_error_handler
来捕获错误时会出现问题,因为尽管有@
个抑制器,处理程序仍会被触发。
我想做一些类似于提供的代码,而不会发出警告。
投掷的警告是:
preg_match(): Delimiter must not be alphanumeric or backslash
答案 0 :(得分:3)
只需在错误处理程序中添加:
function user_error_handler($severity, $msg, $filename, $linenum, $content) {
if (0 == (error_reporting() & $severity)) return;
...
}
在这种情况下,由于@
运算符,error_reporting()
将返回0.