/** * 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; } */ }