10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

全角でも半角でも通過する、電話番号入力チェック

Last updated at Posted at 2014-07-01

#やりたかったこと

表題の通り。
「全角?半角?なんじゃらほい」というユーザーが想定される時に、全角で電話番号入力してもチェックを通過させるバリデーション。

#コード

function checkTel($str)
    {
		//全角を半角に
        $str = mb_convert_kana($str,"a", "euc-jp");
		//半角または全角のハイフンは取り除く
		$str = mb_ereg_replace("-", "", $str);
		$str = mb_ereg_replace("ー", "", $str);
		$str = mb_ereg_replace("-", "", $str);
    
		//数字であり、かつ10桁もしくは9桁かチェック
      if(ctype_digit($str) AND (strlen($str) == 10 OR strlen($str)== 11)){
          return TRUE;
      } else {
          return FALSE;
      }
}

#捕捉
コメントいただき、修正しました。

str_replace ではなく mb_ereg_replace に

UTF-8でない文字コードだと、マルチバイトで文字化けするらしい。

参考
http://www.softel.co.jp/blogs/tech/archives/525

is_numeric ではなくctype_digit に

is_numeric だと16進数や化学記号も通過させちゃうようです。

参考
http://www.php.net/manual/ja/function.is-numeric.php
http://thesaibase.com/php/ctype-digit

10
11
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?