名前の正規表現関数を作ってみた。
イマイチ、functionの使い方がわからなかった。
きっと、自分で関数とか作っちゃったら便利なんだろーなーとは感づいてた。
でも、一年以上放置してた。
htmlspecialcharsとかも、毎度、いちいち書いてた。
今回、重い腰をあげて、今更ながらfunctionに取り組んでます。
作ってみました。
入力してもらった名前や会社名なんかをバリデーションしますよ。
function nameValidate($name,$s,$i,$p,$l){
$err = array();
if ($name === "" || $name === null){
$err = $s."を入力してください。<br />";
}elseif ((mb_strlen($name,"UTF-8")) > $i){
$err = $s."は".$i."文字以内で入力してください。<br />";
}elseif (!preg_match($p,$name)) {
$err[] = $s."は".$l."で入力してください。<br />";
}
return $err;
}
名前と会社名を打ち込むための入力フォームを設置し、
そこから渡された値が、こちらの思惑通りじゃなければエラーを出しちゃいます。
①空じゃない?
②文字数超過してない?
③妙な記号とか打ち込んでない?
そんなところをチェックさせていただきます。
※コード内のhってのは、htmlspecialcharsの関数です。
$name = "";
$company = "";
$errs = array();
if (isset($_POST['submit'])) {
if (isset($_POST['name'])) {
$name = $_POST['name'];
$err = nameValidate($name,'氏名',10,"/\A[ぁ-んァ-ヶー一-龠]+\z/u","漢字、ひらがな、カタカナ、または、ローマ字");
if (!empty($err)) {
foreach ($err as $value) {
array_push($errs, $value);
}
}
}
if (isset($_POST['company'])) {
$company = $_POST['company'];
$err = nameValidate($company,'会社名',5,"/\A[ぁ-んァ-ヶー一-龠]+\z/u","漢字、ひらがな、カタカナ、または、ローマ字");
if (!empty($err)) {
foreach ($err as $value) {
array_push($errs, $value);
}
}
}
if (empty($errs)) {
header('Location:thanks.php');
exit;
}
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>新規登録画面</title>
</head>
<body>
<h1>新規登録画面</h1>
<?php
if (!empty($errs)) {
foreach ($errs as $err) {
echo h($err)."<br />";
}
}
?>
<form action="" method="post">
<p>名前:<input type="text" name="name" value="<?php if(isset($name)){echo h($name);}?>" /></p>
<p>会社名:<input type="text" name="company" value="<?php if(isset($company)){echo h($company);}?>" /></p>
<p><input type="submit" name="submit" value="送信" /></p>
</form>
</body>
</html>
独学の素人が作ったコードです。ここがイケテナイとかあると思います。 イケテナイところはどんどんご指摘ください。 よろしくです。