[PHP-users 10398] Re: プログラムのアップ方法

D.Yamashita php-users@php.gr.jp
Fri, 27 Sep 2002 17:39:15 +0900


山下と申します。

> 半角カタカナのチェックを下記のように行おうと思い
> Windows環境からFFFTPでLinux環境へプログラムをアップした
> いのですが、
> 半角カタカナの部分が文字化けを起こしてしまい、思うように
> 動作出来ません。
>
> 文字化け部分
> if (ereg("[ヲ-゜]", $kana)) {
> echo "半角カタカナが含まれている";
> }

UNIXシステムにおいては、半角カナのフォントが入っている場合は
結構少ないそうなので、文字化けが起こるのもそれが原因ではないかと
思われます。

FFFTPなどの高度なFTPクライアントを使用せず、Windows標準の
FTPコマンドや、samba共有でファイルを転送してみてはいかがで
しょうか?

それからもう一つ。
プログラム上に半カナが入っているのはあまり好ましくないと
思いますので、半カナの"文字そのもの"を判別プログラム内に入れる
のではなく、"文字のASCIIコード"で判別するようにしてはいかが
でしょう?

eregなどの正規表現を使った一発判別処理は不可能かもしれませんが、
SJISかEUCかが決まっているのであれば、これで十分対応可能かと。

# あくまで"意図していることを表現する"ためだけの、
# プログラムを書くと、このような感じかも。

## ※SJISを用いる場合です。

00: for( $i=0 ; i<strlen($kana) ; $i++) {
01:    $ascii = ord(substr($i,1,$kana));
02:    if( 0x0A <= $ascii && $ascii <= 0xDF )
03:        echo "半角カタカナが含まれている";
04:    if( 0x7F <= $ascii )
05:        $i++;
06: }

EUCの半カナは2バイト文字なので、ちょっと判別が面倒ですが。。。

http://www.mikeneko.ne.jp/~lab/index.html
こちらのホームページに、半カナの文字コードに関する記述が
あります。ご参考にどうぞ。

では。
失礼致します。

国国国国国国国国国国国国国国国国国国国国国国国国
大阪大学大学院 工学研究科 情報システム工学専攻
                        山 下  大 介
  Mail: yamasan@ise.eng.osaka-u.ac.jp
国国国国国国国国国国国国国国国国国国国国国国国国