文字列

PHPのシンタックス

  1. HOME
  2. 文字列

ヒアドキュメント構文

<<<"識別子"
~任意の文字列~
識別子;

複数行の文字列をヒアドキュメントで作成

これから"PHPのヒアドキュメント構文"の書式を覚えよう。 ソースコード参照だよ!
<?php
$document = "ヒアドキュメント構文";
$msg = <<<"EOD"
これから"PHPの$document"の書式を覚えよう。
ソースコード参照だよ!
EOD;
echo $msg;
?>

Nowdoc構文

ヒアドキュメント構文とは違い、文章内の変数を展開しません。
ヒアドキュメントはダブルクォートで囲まれた文字列
Nowdocはシングルクォートで囲まれた文字列

複数行の文字列をNowdocで作成

これから"PHPの$documentN"の書式を覚えよう。 ソースコード参照だよ!
<?php
$document = "Nowdoc構文";
$msg = <<<'EOD'
これから"PHPの$documentN"の書式を覚えよう。
ソースコード参照だよ!
EOD;
echo $msg;
?>

フォーマット文字列 printf()

printf('フォーマット文字列',値1,値2,...,値n)

型指定子

型指定子 意味
% パーセント文字。引数は不要
d 引数を整数として扱う。10進数で表現
u 引数を整数として扱う。符号なしの10進数で表現
F 引数をfloatとして扱う。浮動小数点数として表現
s 引数を文字列として扱う。
x 引数を整数として扱う。16進数の(小文字で)表現
X 引数を整数として扱う。16進数の(大文字で)表現

円周率の少数第3位までを出力する

3.1415926535898
円周率は3.142です。
<?php
echo M_PI; //円周率を出力
echo "<br>", PHP_EOL; //改行
printf('円周率は%.3fです。', M_PI); //フォーマット文字列を指定
?>

フォーマット文字列を変数で指定

最大値18.9,最小値12.3
<?php
$format = '最大値%.1f,最小値%.1f';
$a = 18.89;
$b = 12.33;
printf($format,$a,$b);
        

フォーマット文字列の構文と書式修飾子

'...%書式修飾子 型指定子...'

パディング指定子
足りない分を埋める文字を指定。
※空白か0以外の文字指定には、全体をダブルクォートで囲み、埋める文字の前にシングルクォートを置く

足りない部分を0と*で埋める

2021-09-01
経費は**7890円です
<?php
$year = 2021;
$month = 9;
$day = 1;
$en = 7890;
printf('%04d-%02d-%02d', $year, $month, $day);
echo "<br>", PHP_EOL; //改行
printf("経費は%'*6d円です", $en);

アラインメント指定子
パディング指定子で埋める際に、値を左寄せにするか右寄せにするかを指定する。
桁の数字前に-で左寄せ、+で右寄せ


精度指定子
ピリオドに続いて小数点以下の桁数を指定します。浮動小数点の場合は桁数で四捨五入し、文字列の場合は文字数で切り捨てる。

フォーマットされた文字列を返す sprintf()

sprintf()はフォーマット文字列を適用した文字列を返す関数です。フォーマット後の文字列を変数などに代入できます。

フォーマット済みの文字列を変数に入れて扱う

商品ナンバーは、2021000892-RRです。
<?php
$tosi = 2021;
$seq = 892;
$type = "RR";
$id = sprintf('%04d%06d-%s', $tosi, $seq, $type);
echo "商品ナンバーは、", $id, "です。";

置換する値を配列で指定

文字列の中に置換する配列が複数個あるときprintf()の代わりにvprintf()を使うと値を配列で指定できる。同様にsprintf()に対してvsprintf()がある。

フォーマット文字列の%を配列の値で置換

最大値18.8、最小値11.1、平均値14.95
<?php
$max = 18.77;
$min = 11.12;
$ave = 14.945;
$data = array($max, $min, $ave); //置換する配列
$formatt = '最大値%.1f、最小値%.1f、平均値%.2f'; //値を置換して表示
vprintf($formatt, $data);