今回はウェブアプリケーション制作時に使うケースの多い、便利なPHP関数をまとめてみたいと思います。
メールアドレスチェック
function emailCheck($str, $mobile=0){
$result['flag'] = true;
$result['message'] = "";
// 携帯メールのドメイン名
$mobile_domains = array(
'docomo.ne.jp',
'mopera.net',
'softbank.ne.jp',
'vodafone.ne.jp',
't.vodafone.ne.jp',
'c.vodafone.ne.jp',
'disney.ne.jp',
'i.softbank.jp',
'ezweb.ne.jp',
'biz.ezweb.ne.jp',
'augps.ezweb.ne.jp',
'ido.ne.jp',
'emnet.ne.jp',
'emobile.ne.jp',
'emobile-s.ne.jp',
'ymobile1.ne.jp',
'ymobile.ne.jp',
'pdx.ne.jp',
'willcom.com',
'wcm.ne.jp',
'y-mobile.ne.jp',
'icloud.com'
);
if(empty($str)){
$result['message'] = "メールアドレスが入力されていません。";
$result['flag'] = false;
} else {
$match_cnt = 0;
if($mobile){
foreach($mobile_domains as $domain){
if(preg_match("/^.+@({$domain})$/", $str)){
$match_cnt++;
}
}
} else {
if(preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $str)){
$match_cnt = 1;
}
}
if($match_cnt == 0){
$result['message'] = "携帯メールアドレスを入力して下さい。";
$result['flag'] = false;
}
}
return $result;
}
携帯メールアドレスのみ登録可の場合とそうでない場合のふたつで利用できるメールアドレスチェック関数。
emailCheck($str, $mobile=0)
上記$strにメールアドレス、$mobileに1(携帯メールアドレスのみ可)、0(すべてのメールアドレス可)を入れて使用します。
バリデーションがOKの場合はtrue、NGの場合はfalseを返すのでこの戻り値を使って処理を分けることができます。
パスワードチェック(6文字以上、確認フォームあり)
function passwordCheck($str1, $str2){
$result['flag'] = true;
$result['message'] = "";
// 未入力
if(empty($str1) || empty($str2)){
$result['message'] = "パスワードまたはパスワード確認が入力されていません。";
$result['flag'] = true;
// 入力済み
} else {
// 半角英数字6文字以上
if (preg_match("/^[a-zA-Z0-9]{6,}$/", $str1) && preg_match("/^[a-zA-Z0-9]{6,}$/", $str2)) {
// 確認パスワードと不一致
if($str1 != $str2){
$result['message'] = "確認パスワードが一致していません。";
$result['flag'] = false;
}
// 半角英数字6文字未満
} else {
$result['message'] = "パスワードは半角英数字6文字以上で入力してください。";
$result['flag'] = false;
}
}
return $result;
}
6文字以上のパスワードで、かつ、入力フォームにパスワード確認用のフォームがある場合のバリデーション関数です。
例)if(passwordCheck($password1, $password2){ 処理1 } else { 処理2 }
6文字以上のパスワードで、かつ、パスワード入力欄と確認欄の文字列が一致している場合、$result[‘flag’]にtrueを返します。
また、NGの場合は$result[‘message’]にエラー文言を返します。
生年月日から年齢変換
function birthToAge($ymd){
$base = new DateTime();
$today = $base->format('Ymd');
$birth = new DateTime($ymd);
$birthday = $birth->format('Ymd');
$age = (int) (($today - $birthday) / 10000);
return $age;
}
生年月日から年齢を計算して返す関数です。
例)$age = birthToAge(‘1980-01-01’);
こんなことをしなくても会員登録時に年齢を入れさせてしまえばいいのでは?と思う方もいるかもしれませんが、年齢を入力させてしまうと翌年にはズレが生じてしまうため面倒でも生年月日を取得する必要があります。
生年月日から年齢を計算することで常に正しい年齢や年代の情報を扱うことができるのです。
ランダム文字列の生成
function getRandCode($len){
for($i=0, $str=null; $i<$len;){
$num = mt_rand(0x30, 0x7A);
if ((0x30 <= $num && $num <= 0x39) || (0x41 <= $num && $num <= 0x5A) || (0x61 <= $num && $num <= 0x7A)){
$str .= chr($num);
$i++;
}
}
return $str;
}
指定の桁数のランダム文字列を生成します。
例)$code = getRandCode(10);
パスワードや認証コードなどを自動生成する際に使うと便利です。
メール送信処理
function sendMail($your_email, $subject, $body, $my_email){
mb_language("Japanese");
mb_internal_encoding("utf-8");
$to = $your_email;
$header = "From: ".$my_email;
if(mb_send_mail($to,$subject,$body,$header)){
return true;
}else{
return false;
}
}