2011-01-23 4 views
0

変数が文字で、数字ではないことを確認するにはどうしたらいいですか?PHP:文字のみをチェック

私はIS_STRINGチェックアウトしていますが、変数を作る場合、あなたは一種の...

答えて

3

使用ctype_alpha()「123」を、それをハック可能性があります。

提供された文字列text内のすべての文字がアルファベットであるかどうかを確認します。

この関数はロケール固有のように見えるので、Umlauts /アクセント記号付きの文字をテストする場合は、最初に正しいロケールを設定する必要があります。

ロケールを使用できない場合は、hereはすべての言語でUnicodeシンボルを検出することを約束する正規表現ベースのアプローチですが、動作すれば完璧なアプローチになります(自分でテストしていません)。

+0

私はちょうどctypep_alphaをテストし、それは文句を言わない "の名前LNAME" を可​​能にするが、それはfalseを返しますtheresのスペースならば、それは "NameLNAME" ..することができます。私がsetlocale(LC_ALL、 'swedish')したときでさえ、NameLNÄÖはfalseを返します。 – Karem

+0

もpreg_matchの提案、preg_replace( "/ \ p {P} | \ p {S}/u"、 ""、$ var))を試しましたが、$ varがNAMENÄÖME123?!#¤ – Karem

+0

@Karemは{S} 'の代わりに' {L} 'を試してみてください。文字クラスの詳細はこちら:http://www.regular-expressions.info/unicode.html –

2

ctype_alpha()はあなたが探しているものです。ドキュメントから

チェックが与えられた文字列のすべての場合には、テキスト、アルファベットです。標準Cロケール文字で

はちょうど[A-ZA-Z]であり、$text場合ctype_alpha()(ctype_upper($text) || ctype_lower($text))に相当する1つだけの文字であるが、他の言語は、上にも下ケースも考えられている文字を持っています。

使用法:

if(ctype_alpha($string)) { 
    //variable is characters only 
} 
+0

のおかげでスペースを入れてstr_replace()と考えています@ Pekka's回答のコメントにある問題を見てください – Karem

関連する問題