PHP5中只是增加了对异常的处理,但是之前很多低版本的函数不会抛出异常,比如 iconv等,当遇到非法输入的时候,会出现:
iconv(): Detected an incomplete multibyte character in input string
的错误信息,只能屏蔽,但却没有很好的方式来捕获这些错误事件,然后来进行处理。
翻阅了PHP的手册后发现了一个新函数,error_get_last(),大概就是取得程序中最后一个错误信息(包括Error、 Warning、Notice等所有的错误),这个是PHP 5.2以后出现的函数,通过这个函数,可以用下列代码来实现捕获错误事件的方式。
function my_iconv($from, $to, $string, $line) {
@trigger_error('hi', E_USER_NOTICE);
$result = @iconv($from, $to, $string);
$error = error_get_last();
if($error['message']!='hi') {
//处理错误
$result = $string;
}
return $result;
}
上面是,当转换过程出现错误的报错的时候,我就不转换,保持原来的编码格式。用这个方法可以对很多PHP内部函数进行封装。