示例#1
0
文件: StrSjis.php 项目: poppen/p2
 /**
  * SJIS文字列の末尾が、第一バイトであれば、タグが壊れる要因となるのでカットする。
  *
  * @access  public
  * @return  string
  */
 function fixSjis($str)
 {
     if (strlen($str) == 0) {
         return;
     }
     $un = unpack('C*', $str);
     $after_sjis1st = false;
     $after_crasher = false;
     foreach ($un as $v) {
         if ($after_sjis1st) {
             $after_sjis1st = false;
             $after_crasher = false;
         } else {
             if (StrSjis::isSjis1stByte($v)) {
                 $after_sjis1st = true;
                 $after_crasher = true;
             } elseif (StrSjis::isSjisCrasherCode($v)) {
                 $after_crasher = true;
             } else {
                 $after_crasher = false;
             }
         }
     }
     if ($after_crasher) {
         $str = substr($str, 0, -1);
     }
     return $str;
     /*
     // 末尾のみをチェックするためのコード。これでは不足。
     if (StrSjis::isSjisCrasherCode($un[$count]) && !StrSjis::isSjis1stByte($un[$count-1])) {
         $str = substr($str, 0, -1);
         return $str;
     }
     */
 }