人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPで、文字列に全角カナ、長音、全角半角スペースのみが含まれていることを判定する正規表現の書き方と使用するPHPの関数を教えて下さい。
環境は、PHP4.3.7。configureで’--enable-mbstring’ ’--enable-mbstr-enc-trans’ ’--enable-mbregex’は通しています。

●質問者: loy
●カテゴリ:ウェブ制作
✍キーワード:PHP 文字列 正規表現 環境 関数
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ke_ishi
●30ポイント

mb_ereg("^[ァ-ヶー ]*$", $str)

でどうですか?

正規表現は

^ … 文字列の先頭

[] … 中の文字群のうち任意の1文字に一致させる

ァ-ヶ … 全角カナの先頭と最後の文字、ハイフンで繋ぐとその範囲すべてを示す

ー … 長音

長音の後ろには半角スペースと全角スペースを並べています。

◎質問者からの返答

上記設定だと内部エンコードがEUCの場合、うまくいきませんでした。「リ」などが含まれるとエラーになってしまいます。EUCの場合は、どうしたらよいのでしょうか?


2 ● ke_ishi
●30ポイント

2度目です。

うちの以下の環境では問題有りません。

--

mbstring.detect_order auto

mbstring.encoding_translation On

mbstring.func_overload 0

mbstring.http_input auto

mbstring.http_output SJIS

mbstring.internal_encoding EUC-JP

mbstring.language Japanese

mbstring.substitute_character no value

--

$str = "リ";

if(mb_ereg("^[ァ-ヶー ]*$", $str)){

echo("OK");

}else{

echo("NG");

}

で試しても、NGになりますか?

フォームからの入力などだと、エンコード検出に失敗するケースもありますので、ぜひ確認してください。

◎質問者からの返答

上記スクリプトはOKでした。フォーム入力で試したところ、「リ」とだけ入力してもint(3)となりました。trim()をかけてから、上記正規表現にかけるとOKになりました。原因はよくわからないのですが、とりあえず動くようになりました。なんなんでしょうかね?

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ