2
function encoded_header($raw) 
{
    mb_internal_encoding('UTF-8');
    mb_regex_encoding('UTF-8');

    if ( mb_eregi('[^][<>a-z0-9 _".()/;,:+@|-]', $raw)  ) 
    {
        $chunks = str_split($raw,  20 );
        $encoded = array();

        foreach ( $chunks as $chunk ) 
        {
            array_push($encoded,  base64_encode( $chunk )  );
        }

        return '=?utf-8?B?' . implode('?==?utf-8?B?', $encoded) . '?=';
    } 
    else 
    {
        return $raw;
    }
}

上面的函数在调用时给了我:

Error: [2] - mb_eregi() [function.mb-eregi0]: mbregex compile err: premature end of char-class

我们最近将我们的 php 更新到了 5.3.3 版本,我们遇到了这个错误。我们之前的 5.0.2 版本运行良好。
我搜索了谷歌,但没有找到任何有用的东西。有人对如何解决此错误有任何建议吗?

4

1 回答 1

4

mb_eregi()在 5.3 版中已贬值

所以用户preg_match();

尝试这个:

preg_match('/[^][<>a-z0-9 _".()\;,:+@|-]/i', $row);
于 2013-05-23T09:42:11.783 回答