LoginSignup
0

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-05-16

今回作るプログラム→数字に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逆引きレシピ

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0