/************************************************************************** ________________________________ jcode-LE.php by TOMO ________________________________ ■ 概要 jcode-LE.phpはPHP用日本語文字コード変換ユーティリティjcode.phpの 簡易版(Light Edition)です。EUC/SJIS/JISを相互に変換することができます。 また文字コードの判別と半角<->全角の変換が可能です。使用方法は同梱の readme.txtをお読み下さい。 ■ バージョン 1.9 (2004/04/10) ■ 変更履歴 v1.9: ZENtoHAN_SJIS()のバグ修正 v1.8: ZENtoHAN_SJIS()のバグ修正 v1.7: AutoDetect()のロジックを変更 JISがらみの関数のバグを修正 v1.6: 名前を変更 半角->全角変換で濁点/半濁点が付く文字が一文字になるように修正。 v1.5: 自動判別の方法を変更。半角カナ混じりの判別もサポート。 v1.4: 処理の高速化。値渡しから参照渡しに変更。 v1.3: HANtoZEN_JISの処理を改善。JIStoSJIS、JIStoEUCの不具合修正。 全角->半角サポート。 v1.2: JIStoSJIS, JIStoEUC, HANtoZEN_JISで末尾のアスキー文字1文字が削除 されるのを修正 v1.1: EUC→SJISとJIS→SJISへの変換で一部文字化けの不具合修正 ■ 利用規定 著作権は放棄しませんが、スクリプトの一部または全部を使用・改造・再配 布することは自由です。 このスクリプトを使用したことで生じたいかなる不都合・損害にも作者は一 切その責任を負いません。 ■ 作者 TOMO ■ 配布元 http://www.spencernetwork.org/jcode-LE/ ***************************************************************************/ # v1.4から重要な変更点があります(注意点参照) ■ 機能 日本語の文字コード - EUC-JP - Shift_JIS - ISO-2022-JP(JIS) を相互に変換します。 また、文字コードの自動判別が可能です 全角<->半角の変換もできます。 ■ 使い方 ・この関数を使いたいスクリプトの先頭でjcode-LE.phpをrequire()かinclude() してください。これでjcode-LE.phpの中の関数が使えます。 Fatal error: Call to undefined function: jcodeconvert() in jcode-LE.php on line 2 というようなエラーが出る場合はうまく読めてません。設定などを確認して みてください。 ・関数 JcodeConvert(文字列, 変換前の漢字コード, 変換後の漢字コード) で漢字コード変換されたあとの文字列を返します。 変換前の漢字コードは次の0-3の数字で指定して下さい。 0:AUTO DETECT(自動判別) 1:EUC-JP 2:Shift_JIS 3:ISO-2022-JP(JIS) 変換後の漢字コードは次の1-3の数字で指定してください。 1:EUC-JP 2:Shift_JIS 3:ISO-2022-JP(JIS) たとえば、 で(ファイルがEUC-JPで書かれていれば)EUC-JPの文字列「てすと」が Shift_JISに変換されてブラウザに出力されます。 JcodeConvertを自動認識で使用した場合で判別不可の時は無変換となります。 ・関数 AutoDetect(文字列) で文字コードの自動判別をします。 判別結果に応じて以下の数値を返します。 0:ASCII文字 1:EUC-JP 2:Shift_JIS 3:ISO-2022-JP(JIS) 5:判別不可 * 4 は未使用です。 ・半角→全角の変換は、 HANtoZEN(文字列, 漢字コード) という関数を使います。 漢字コードには以下の数字を指定して下さい。 0:PASS(無変換) 1:EUC-JP 2:Shift_JIS 3:ISO-2022-JP(JIS) ・全角→半角の変換は、 ZENtoHAN(文字列, 漢字コード, flag1, flag2) という関数を使います。指定できる漢字コードはEUC-JP、Shift_JISとJIS のみです。 以下の数字で指定して下さい。 0:PASS(無変換) 1:EUC-JP 2:Shift_JIS 3:ISO-2022-JP(JIS) カタカナ、英数字を変換するかどうかは、 flag1, flag2 にそれぞれ 0 か 1 の数字を指定して下さい。 この例では、カタカナだけが半角に変換されます。 デフォルト値はflag1=1, flag2=1 で、省略時にこの値が使用されます。 つまり、 echo ZENtoHAN($string, 1); でカタカナ、英数字は両方とも半角に変換されて出力されます。 (注)カタカナの変換で「」。、・゛゜を半角カナに変換します。 また、" "(全角スペース)も半角スペース" "(ASCII:0x20)に変換します。 ■ 注意点 ・バージョン1.4から各関数への引数(文字列)の渡し方を値渡しから参照渡しに 変更しました。 これにより、JcodeConvert("テスト", 1, 3)という使い方ができなくなりま した。文字列を一度変数に格納してから引数として渡してください。 また、元の文字列(上の例の$string)には一切変更は加えられません。 ・自動認識を過信してはいけません。 - ISO-2022-JPは確実に判断できますが、EUC-JPとShift_JISではどちらとも 取れる文字がそれぞれあるので入力文字列が少ないと判別できないことが あります。 ・フォームから送られてくる文字の一部は"\"円記号でエスケープされています。 - 変換する前や後にstripslashes()関数をうまく組合わせると正しく変換さ れるはずです。 if(get_magic_quotes_gpc()) $string = stripslashes($string); こんな感じの一行を入れると良いかと思われます。 ・処理速度は遅いです。 - スクリプトで処理しているので組込み関数と比べれば当然遅いです。 - 文字数が多いとタイムアウトします。 (と言ってもちょっとしたフォームからの入力ぐらいなら一瞬です) - 処理時間はマシンの性能や状態に依存します。 - PHP3とPHP4では相当違います。PHP3の方が圧倒的に遅いです。 ■ その他 ・普通のPHPスクリプトなので、国際化されてなくても使用できます。 ・フォームから入力を気軽にコード変換したり出来て便利です。 ・個々の関数は単体でも使用できます。必要な関数だけコピーしてお使い下さい。