ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Changeset 4847


Ignore:
Timestamp:
Dec 26, 2007, 11:36:21 AM (12 years ago)
Author:
ebihara
Message:

#1534:PEARコーディング規約に沿う形に修正

File:
1 edited

Legend:

Unmodified
Added
Removed
  • OpenPNE/trunk/webapp/lib/OpenPNE/KtaiMail.php

    r4736 r4847  
    291291        $str = str_replace('"', '', $str);
    292292
    293     $bkup = $str;
    294         $ar = split(',',$str);
    295     $cnt = count($ar);
    296     if( $cnt < 2 ){
    297     $str = $bkup;
    298         // <example@docomo.ne.jp> というアドレスになることがある。
    299         //   日本語 <example@docomo.ne.jp>
    300         // のような場合に複数マッチする可能性があるので、
    301         // マッチした最後のものを取ってくるように変更
    302         $matches = array();
    303         $regx = '/([\.\w!#$%&\'*+\-\/=?^`{|}~]+@[\w!#$%&\'*+\-\/=?^`{|}~]+(\.[\w!#$%&\'*+\-\/=?^`{|}~]+)*)/';
    304         if (preg_match_all($regx, $str, $matches)) {
    305             return array_pop($matches[1]);
    306         }
    307     } else {
    308     $regx = '/([\.\w!#$%&\'*+\-\/=?^`{|}~]+@[\w!#$%&\'*+\-\/=?^`{|}~]+(\.[\w!#$%&\'*+\-\/=?^`{|}~]+)*)/';
    309         for($i=0;$i<$cnt;$i++){
    310              $matches = array();
    311                
     293        $bkup = $str;
     294        $ar = split(',', $str);
     295        $cnt = count($ar);
     296        if($cnt < 2){
     297            $str = $bkup;
     298            // <example@docomo.ne.jp> というアドレスになることがある。
     299            //   日本語 <example@docomo.ne.jp>
     300            // のような場合に複数マッチする可能性があるので、
     301            // マッチした最後のものを取ってくるように変更
     302            $matches = array();
     303            $regx = '/([\.\w!#$%&\'*+\-\/=?^`{|}~]+@[\w!#$%&\'*+\-\/=?^`{|}~]+(\.[\w!#$%&\'*+\-\/=?^`{|}~]+)*)/';
     304            if (preg_match_all($regx, $str, $matches)) {
     305                return array_pop($matches[1]);
     306            }
     307        } else {
     308            $regx = '/([\.\w!#$%&\'*+\-\/=?^`{|}~]+@[\w!#$%&\'*+\-\/=?^`{|}~]+(\.[\w!#$%&\'*+\-\/=?^`{|}~]+)*)/';
     309            for($i = 0; $i < $cnt; $i++) {
     310                $matches = array();
    312311                if (preg_match_all($regx, $ar[$i], $matches)) {
    313            
    314                 $to = array_pop($matches[1]);
    315                 list($to_user0, $to_host0) = explode("@", $to, 2);
    316                 if( $to_host0 === MAIL_SERVER_DOMAIN ) {
     312                    $to = array_pop($matches[1]);
     313                    list($to_user0, $to_host0) = explode("@", $to, 2);
     314                if($to_host0 === MAIL_SERVER_DOMAIN) {
    317315                    return $to;
    318316                }
    319                 }
    320         }
    321 
    322 
    323 
     317            }
     318        }
    324319    }
    325320
     
    327322    }
    328323
    329     function convert_text_core( $str )
    330     {
    331 
    332       $converted_text = "";
    333       $res = preg_split("/JIS\+..../", $str, -1 ,PREG_SPLIT_OFFSET_CAPTURE) ;
    334      
    335       for($i=0;$i<count($res);$i++){
    336         if($i==0){
    337           $begin=strlen($res[$i][0]);
    338           $converted_text .= $res[$i][0];
    339         } else {
    340           $jis=substr($str,$begin,8);
    341          
    342           // $jisを変換
    343           $a = "0x".substr($jis,4,2);
    344           $b = "0x".substr($jis,6,2);
    345           {
    346             // http://www.slayers.ne.jp/~oouchi/code/jistosjis.html
    347             $a=intval($a,16);
    348             $b=intval($b,16);
    349             if($a%2==1)
    350               $b+=0x1f;
    351             else
    352               $b+=0x7d;
    353            
    354             if($b>=0x7f)
    355               $b++;
    356            
    357             $a=floor(($a-0x21)/2)+0x81;
    358            
    359             if($a>=0x9e)
    360               $a+=0x40;
    361            
    362             $c=$a*16*16+$b;
    363             if( $c >= 0xEDCF || ( $c >= 0xED40 && $c <= 0xEDCE )) $c += 1536;
    364             else $c += 2816;
    365 
    366             // 絵文字変換
    367             $bin[0] = chr($c >> 8);
    368             $bin[1] = chr($c - ($bin[0] << 8));
    369             $emoji = emoji_escape_e($bin);
    370              
    371             $converted_text .= $emoji;
    372           }
    373        
    374           //Eメール送出用Shift-JIS(E-SJIS)と携帯用Shift-JISコード(K-SJIS)には以下の関係がある
    375           // * 358 <= 絵文字番号 <= 499, 700 <= 絵文字番号
    376           // hexdec(K-SJIS) = hexdec(E-SJIS) + 1536
    377           // * それ以外の絵文字
    378           // hexdec(K-SJIS) = hexdec(E-SJIS) + 2816
    379          
    380           $begin=strlen($res[$i][0])+$res[$i][1];
    381           $converted_text .= $res[$i][0];
    382         }
    383        
    384       }
     324    function convert_text_core($str)
     325    {
     326        $converted_text = "";
     327        $res = preg_split("/JIS\+..../", $str, -1 ,PREG_SPLIT_OFFSET_CAPTURE) ;
     328
     329        for ($i = 0; $i < count($res); $i++) {
     330            if ($i == 0) {
     331                $begin = strlen($res[$i][0]);
     332                $converted_text .= $res[$i][0];
     333            } else {
     334                $jis = substr($str, $begin, 8);
     335
     336                // $jisを変換
     337                $a = "0x" . substr($jis, 4, 2);
     338                $b = "0x" . substr($jis, 6, 2);
     339                {
     340                    // http://www.slayers.ne.jp/~oouchi/code/jistosjis.html
     341                    $a = intval($a, 16);
     342                    $b = intval($b, 16);
     343                    if($a % 2 == 1) {
     344                        $b += 0x1f;
     345                    } else {
     346                        $b += 0x7d;
     347                    }
     348
     349                    if($b >= 0x7f) {
     350                        $b++;
     351                    }
     352   
     353                    $a = floor(($a-0x21) / 2) + 0x81;
     354
     355                    if ($a >= 0x9e) {
     356                        $a+=0x40;
     357                    }
     358
     359                    $c = $a * 16 * 16 + $b;
     360                    if($c >= 0xEDCF || ($c >= 0xED40 && $c <= 0xEDCE)) {
     361                        $c += 1536;
     362                    } else {
     363                        $c += 2816;
     364                    }
     365
     366                    // 絵文字変換
     367                    $bin[0] = chr($c >> 8);
     368                    $bin[1] = chr($c - ($bin[0] << 8));
     369                    $emoji = emoji_escape_e($bin);
     370
     371                    $converted_text .= $emoji;
     372                }
     373
     374                //Eメール送出用Shift-JIS(E-SJIS)と携帯用Shift-JISコード(K-SJIS)には以下の関係がある
     375                // * 358 <= 絵文字番号 <= 499, 700 <= 絵文字番号
     376                // hexdec(K-SJIS) = hexdec(E-SJIS) + 1536
     377                // * それ以外の絵文字
     378                // hexdec(K-SJIS) = hexdec(E-SJIS) + 2816
     379                $begin = strlen($res[$i][0]) + $res[$i][1];
     380                $converted_text .= $res[$i][0];
     381            }
     382        }
    385383      return $converted_text;
    386      
    387      
    388384    }
    389385 
     
    403399
    404400
    405         if ( $GLOBALS['__Framework']['carrier'] != 's' ) {
    406           mb_substitute_character("long");
    407           $str = mb_convert_encoding($str, $to_encoding, $from_encoding);
    408           $str = $this->convert_text_core($str);
     401        if ($GLOBALS['__Framework']['carrier'] != 's') {
     402            mb_substitute_character("long");
     403            $str = mb_convert_encoding($str, $to_encoding, $from_encoding);
     404            $str = $this->convert_text_core($str);
    409405        } else {
    410           $str = mb_convert_encoding($str, $to_encoding, $from_encoding);
     406            $str = mb_convert_encoding($str, $to_encoding, $from_encoding);
    411407        }
    412408
Note: See TracChangeset for help on using the changeset viewer.