ド素人ですが、わけあって、プログラミング勉強してます。。。

独学でプログラミングを勉強中です。よろしくお願いします。

名前の正規表現関数を作ってみた。

イマイチ、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>

独学の素人が作ったコードです。ここがイケテナイとかあると思います。 イケテナイところはどんどんご指摘ください。 よろしくです。