今回作るプログラム→数字に3桁ごとカンマをつけるプログラム
今回はこんなプログラムを作ります。
↓このようなフォームに・・・
数字を入力すると・・・
↓このようにカンマつきの数字を返してくれます。
まずはHTMLにてエスケープ処理をする関数「h.php」を書きましょう。
h.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>HTMLでのエスケープ処理をする関数</title>
</head>
<body>
<?php
//HTMLでのエスケープ処理をする関数
function h($var) {
// is_array() -> $varが配列かどうかを調べる
// $varが配列だったら・・・
if (is_array($var)) {
// array_map() -> 配列の各要素に対して指定した関数を実行する
// array_map('コールバック関数名',配列)
return array_map('h', ($var));
// $varが配列じゃなかったら・・・
} else {
// フォームなどからのユーザーのデータをブラウザに表示する場合は、
// 原則すべてのデータにhtmlspecialchars関数を使用する。
// ENT_QUOTES -> クオートを変換する
return htmlspecialchars($var, ENT_QUOTES, 'UTF-8');
}
}
?>
</body>
</html>
次に実際のコードです。require_onceにて、上の「h.php」を読み込んでいます。
form_number_format.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>金額にカンマを付けたい!</title>
</head>
<body>
<?php
// エラーを出力(デバッグ用)
ini_set( 'display_errors', 1 );
// h()関数を読み込む
require_once 'h.php';
// 変数に$_POSTの値を代入する
// 三項演算子 -> if ? true : false;
//$_POST['number']->inputのname属性"number"の値を送信した先
$number = isset($_POST['number']) ? $_POST['number'] : '';
// ctype_digit()関数で正の関数および、strlen()関数で4桁以上かどうか判定
// もし、正の数字かつ4桁以上ならば・・・
if (ctype_digit($number) && (strlen($number) >= 4)) {
// number_format()関数でカンマをつける
// number_format()->3桁ごとにカンマをつける
echo "<p>".h(number_format(h($number)))."</p>";
// もし正の数字かつ4桁以上じゃなかったら・・・
} elseif ($number != '') {
echo "<p>金額には4桁以上の正の整数を入力してください</p>";
}
?>
<form action="form_number_format.php" method="post">
<p>4桁以上の金額を入力してください</p>
<input type="text" name="number" value="送信する">
<input type="submit" value="送信する">
</form>
</body>
</html>
本日は以上です。押忍!
参考書籍
PHP逆引きレシピ