dポイントプレゼントキャンペーン実施中!

初歩的な質問で済みません。。
今、入力内容が人名で有るのかを調べる関数を作ろうとしています。
具体的には、
1、漢字、ひらがな、全角カタカナでの入力であるか。
2、性名の間に全角スペースが入っているか。(出来れば、外国名の場合はミドルネームの前後にスペース)
を判別したいのです。
正規表現を使えば良いと思うのですが、webを調べましたが具体的な記事が見つかりませんでした。
どうやら自分には正規表現が理解しがたいようです。。
詳しい方、解りやすく教えて下さい!

A 回答 (4件)

No2です。

以下だめですかねえ、問題ないと思うのですが..
※ここに投稿する時半角カタカナのア-ンが全角カタカナのア-ンに勝手に変わってます。
<?php
mb_internal_encoding("UTF-8");
mb_regex_encoding("UTF-8");
$namae = $_REQUEST['namae'];
$patarn = "[^_a-zA-Z0-9ア-ン]+( [^_a-zA-Z0-9ア-ン]+)+";
if(mb_ereg_match($patarn,$namae)){
echo "match";
}else{
echo "unmach";
}
?>
    • good
    • 0
この回答へのお礼

返事が遅れて済みません。
開発用のPCを離れていました。
どうやら、全く問題なく機能しているようです。
文字コードを指定する必要が有ると言う事ですかね。
考えて下さって、有り難うございます。
これで作業が進みます。

お礼日時:2009/06/05 22:28

utf-8でしたら、


preg_match('/^[ア-ンあ-ん亜-腕弌-熙a-zA-Z]+[ | ][ァ-ヶぁ-ん亜-腕弌-熙a-zA-Z]+$/', $name) > '0'
 ↓
preg_match('/^[ア-ンあ-ん一-龠a-zA-Z]+[ | ][ァ-ヶぁ-ん一-龠a-zA-Z]+$/', $name) > '0'

 ですが、名字がひらがなというのはないような気がしたので、
 ↓
preg_match('/^[ア-ン一-龠a-zA-Z]+[ | ][ァ-ヶぁ-ん一-龠a-zA-Z]+$/', $name) > '0'

 が、近似値と思ったのですが、「ひらがなのみでの入力の場合スペースを入れなくても真になってしまうようです」・・・あれ、何ででしょう?「一-龠」の中にスペースが含まれるとか?
 レベル低くて済みませんでした。

>>これを元に自分も考えてみようと思います。
 結果が分かったら教えてくださいませ。
    • good
    • 0
この回答へのお礼

すみません、返事が遅れてしまいました。
どうやらバグのようです。。
参考サイト↓
http://mlog.euqset.org/archives/php-users.php.gr …
半角スペースを使用すれば問題ないようですが。。。
姓名の間に半角スペースというのはユーザビリティーが最悪に。。
たしかに、名字がひらがなは無さそうなのでこのまま使おうと思います。
まぁよく考えたら、姓名別々に入力してPHP側でスペースを入れて結合するのが一番楽かなと。。。
今回は助けていただきありがとうございました。

お礼日時:2009/06/01 13:01

マルチバイト対応のmb_ereg関数を使って、英数字と半角カタカナ以外


の文字全部の1文字以上としてしまえばどうでしょう。
if (mb_ereg_match("[^_a-zA-Z0-9ア-ン]+( [^_a-zA-Z0-9ア-ン]+)+", 対象変数))
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
簡単な条件分岐のコードで試してみましたが、
Warning: mb_ereg_match() [function.mb-ereg-match]: mbregex compile err: premature end of char-class in /virtual/shady/public_html/phptest/test2_2.php on line 11
と言うエラーが出てしまいました。。。

お礼日時:2009/05/29 23:38

$name = '斎 藤太郎';



if(preg_match('/^[ア-ンあ-ん亜-腕弌-熙a-zA-Z]+[ | ][ァ-ヶぁ-ん亜-腕弌-熙a-zA-Z]+$/', $name) > '0') print "全角スペースが入っています";
else print "全角スペースが入っていません";

--------------------------
(カタカナ、ひらがな、漢字)の文字 + 全角/半角スペース1個 + (カタカナ、ひらがな、漢字)の文字の正規表現です。

上記のはeuc-jpです。漢字は第二水準まで。
utf-8 にすると、亜-腕弌-熙 → 一-龠 に変更すると全ての漢字になります。
shift_jisは未確認。

厳密な確認をしていませんが。
    • good
    • 0
この回答へのお礼

回答有り難うございます。
概ね成功ですが、ただひらがなのみでの入力の場合スペースを入れなくても真になってしまうようです。
これを元に自分も考えてみようと思います。
ちなみにutf-8で開発しています。

お礼日時:2009/05/29 23:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!