入力文字数 : %d bytes, 出力文字数 : %d bytes, 利用関数 : %s
\n", $nInputBytes, $nOutputBytes, $strFuncName); print("-------------------------------
\n"); print("\n".$strMessage."\n\n"); } print("入力画面を再表示する\n"); // デコード関数 function func_decode(&$str, $strFunc) { // 利用した関数名 $strFuncName = ''; if($strFunc == 'disable_builtin') { // 強制的にPHPビルトイン関数を無効化する $str = mb_convert_encoding(func_decode_self($str), 'UTF8', 'auto'); $strFuncName = 'オリジナル関数'; } else if(function_exists('quoted_printable_decode')) { $str = mb_convert_encoding(quoted_printable_decode($str), 'UTF8', 'auto'); $strFuncName = 'quoted_printable_decode'; } else { $str = mb_convert_encoding(func_decode_self($str), 'UTF8', 'auto'); $strFuncName = 'オリジナル関数(ビルトイン関数無し)'; } // 不要なスラッシュを除去 $str = stripslashes($str); return($strFuncName); } // エンコード関数 function func_encode(&$str, $strMode, $strFunc) { // 利用した関数名 $strFuncName = ''; // 文字コードの指定 $strCode = 'SJIS'; switch($strMode) { case 'encode_sjis': $strCode = 'SJIS'; break; case 'encode_iso2022jp': $strCode = 'ISO-2022-JP'; break; case 'encode_utf8': $strCode = 'UTF8'; break; case 'encode_euc': $strCode = 'EUC-JP'; break; } if($strFunc == 'disable_builtin') { // 強制的にPHPビルトイン関数を無効化する $str = func_encode_self(mb_convert_encoding($str,$strCode,'auto')); $strFuncName = 'オリジナル関数'; } else if(function_exists('quoted_printable_encode')) { $str = quoted_printable_encode(mb_convert_encoding($str,$strCode,'auto')); $strFuncName = 'quoted_printable_encode'; } else if(function_exists('imap_8bit')) { $str = imap_8bit(mb_convert_encoding($str,$strCode,'auto')); $strFuncName = 'imap_8bit'; } else { $arrEncodeSupport = mb_list_encodings(); if(array_search('Quoted-Printable', $arrEncodeSupport) != FALSE) { $str = mb_convert_encoding(mb_convert_encoding($str,$strCode,'auto'), 'Quoted-Printable', $strCode); $strFuncName = 'mb_convert_encoding'; } else { $str = func_encode_self(mb_convert_encoding($str,$strCode,'auto')); $strFuncName = 'オリジナル関数(ビルトイン関数無し)'; } } return($strFuncName); } // デコード関数(PHPの関数を使わないバージョン) function func_decode_self($str) { $out = preg_replace('/=\r?\n/', '', $str); $out = preg_replace('/=([A-F0-9]{2})/e', "chr(hexdec ('$1'))" , $out); return trim($out); } // エンコード関数(PHPの関数を使わないバージョン) function func_encode_self($str) { $crlf="\r\n"; $str=trim($str); $lines = preg_split("/(\r\n|\n|\r)/s", $str); $out = ''; $temp = ''; foreach ($lines as $line) { for ($j = 0; $j < strlen($line); $j++) { $char = substr ( $line, $j, 1 ); $ascii = ord ( $char ); if ( $ascii < 32 || $ascii == 61 || $ascii > 126 ) { $char = '=' . strtoupper ( dechex( $ascii ) ); } if ( ( strlen ( $temp ) + strlen ( $char ) ) >= 76 ) { $out .= $temp . '=' . $crlf; $temp = ''; } $temp .= $char; } } $out .= $temp; return trim ( $out ); } ?>