0

我正在尝试验证一个字符串是否包含正则表达式,并且它在 PHP 中是有效的。通常,我会通过以下方式执行此操作

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

这会产生一个警告,这很好,因为我们@用来抑制它。但是,当我们使用set_error_handler捕获错误时会出现问题,因为尽管有抑制器,但仍会触发处理程序@

我想做一些与提供的代码类似的事情,而不会引发警告。

抛出的警告是:

preg_match(): Delimiter must not be alphanumeric or backslash
4

1 回答 1

3

只需将其添加到您的错误处理程序中:

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

在这种情况下,由于@运算符,error_reporting()将返回 0。

于 2013-02-21T20:54:50.557 回答