- PR -

php 2byte文字のチェック

1
投稿者投稿内容
未記入
会議室デビュー日: 2005/09/13
投稿数: 6
投稿日時: 2005-09-28 17:46
いつも大変お世話になってます

早速質問ですが、ある項目のチェックをphpで行い、日本語(2bytes)文字があったら、警告するような文を書きたいのですが、うまくいきません。

申し訳ありませんが、ご教授いただけないでしょうか。
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-09-28 19:15
どもです。がると申します。
引用:

未記入さんの書き込み (2005-09-28 17:46) より:
早速質問ですが、ある項目のチェックをphpで行い、日本語(2bytes)文字があったら、警告するような文を書きたいのですが、うまくいきません。


んっと。取り合えず考え方をつらつらと。

「日本語」であるかは「何がどのように」違うのか。まずは
このあたりを把握するとよいです。
http://euc.jp/i18n/charcode.ja.html
例えばこの辺が参考になるか、と。
# ぐぅぐるで「shift jis 文字コード」で検索をかけています

で…Shift Jisで処理すると色々と面倒なので、こういうときは
EUCで処理をするとよいです。
# 一言で片付けると「第二バイトの処理が面倒」

というわけで、まず処理対象の文字列をEUCに変換しましょう。

つぎ。
EUCは「0xA1A1〜0xFEFE (第1バイト・第2バイトとも0xA1〜0xFE)」
という特徴を持ちます(除く半角カタカナ&補助漢字)。
と、文字コードがはっきりすれば、あとは正規表現でひっかければ
よいです。
正規表現で「文字コードでひっかける」やり方は適宜調べてみて
ください。

とまぁこんな感じで「文字列に日本語が混じっているかどうかを
チェックする」です。
こんな感じで回答になりますでしょうか?
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2005-10-06 18:56
コード:
if(!preg_match("/^[\w\.\/\-\\_\[\];,\?]+$/", $jap)){
    echo "却下";
    exit;
}

1

スキルアップ/キャリアアップ(JOB@IT)