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 に答える