PHP
初心者
プログラム
number_format

【PHP】数字に3桁ごとカンマをつけるプログラムを作ろう。「10000円」→「10,000円」と表記したい!!

今回作るプログラム→数字に3桁ごとカンマをつけるプログラム

今回はこんなプログラムを作ります。

↓このようなフォームに・・・

 2018-05-17 8.47.53.png

数字を入力すると・・・

 2018-05-17 8.48.02.png

↓このようにカンマつきの数字を返してくれます。

 2018-05-17 8.48.09.png

まずは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逆引きレシピ