アプリ版:「スタンプのみでお礼する」機能のリリースについて

if (preg_match('/[ァ-ヶー]+/', $value, $match )) {
print ("$value"."はカタカナです。"."($match[0])"."<br />")
} else {
print ("$value"."はカタカナではない。<br />");
}
という感じで全角カタカナにマッチさせる正規表現を使いたいのですが、このやり方だと「全角カタカナを含んでいる…」という表現になってしまいます。ある文字列が「すべて全角カタカナである」という正規表現を考えているのですが、なかなかうまくいきません。逆引きのサンプルなんかでもなかなか見つからなくて困っています。
 同様に「すべて平仮名にマッチ!」というのにも応用できると思うのですが、なかなかうまく行きません。
 是非、そのやり方やヒントをおしえてください。

 マルチバイト対応なので[ぁ-ん]のような形で表記できます。またPerl互換(preg_match)で作っているので、Perlに詳しい方も是非是非おしえてください。

A 回答 (4件)

行頭と行末を入れてみよう。


http://crocro.com/pc/write/hide/chimarl09_01.htm …

この回答への補足

^[ァ-ヶ]+$
駄目でした…。

^[ァ-ヶ]$
なんか駄目です。

他のサイトで見つけたのですが、
(mb_eregですが)
if (mb_ereg("^[ア-ン]+$", $str)) {
echo "すべて全角カタカナである";
} else {
echo "すべて全角カタカナではない";
}
もうまくマッチしません。

補足日時:2008/06/26 17:27
    • good
    • 0

[ァ-ヶー]+


は文字コードによって片仮名の範囲がことなるので、あやしいですよ

この回答への補足

文字コード変換済みでも駄目でしょうか?

補足日時:2008/06/26 17:11
    • good
    • 0
この回答へのお礼

すべの皆様のヒントで、やっとできました。
(ホントに、ちょっとモノを言ってくれる方々がいると考えるとわかるんですが…一人だとつらい…。。)

 いろいろやってみたあげく、
[^ア-ン][^ア-ンーヽヾ]という感じで「カタカナ以外」でマッチさせてみました。
 ありがとうございます。

お礼日時:2008/06/26 18:12

全角カタカナでない文字を検索するようにしては?


全角カタカナでない文字が見つからなければ文字列は
全て全角カタカナですよね。
あと、空文字列の場合に注意してください。
    • good
    • 0

単純に考えて


「カタカナではない文字を探したがマッチしなかったら」
といった感じではだめでしょうか?

その際、""(文字なし)の状態もマッチしてしまわないように工夫してください。

この回答への補足

それだと相当に煩雑なコードになるのではないか…と。
ちょっと今の僕には不可能なような気がします。

補足日時:2008/06/26 17:31
    • good
    • 0

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