【PHPをふわっと語りたい人のための入門講座】 文字フォーマットを使用した文字出力方法
目次
このブログでは、PHPを始めようと考えている方が少しでもわかりやすく理解できるように、ふわっと優しく勉強していきます!
今回は、printf/vprintf/sprintfの文字フォーマットを指定しての文字列出力についてです。
フォーマットとは?
フォーマットとは、データ出力の際に表示する形式を指定するための記述子のことです。
記述子の一覧を下記に記載します。
記述子一覧
- %b
- 2進表現として表現
- %c
- ASCII 値の文字として表現
- %d
- 10進数として表現
- %e
- 指数形式の浮動小数点として表示(科学記法)
- %u
- 符号無しの 10 進数として表示
- %f
- 浮動小数点数として表現
- %o
- 8 進数として表現
- %s
- 文字列として表現
- %x
- 小文字の16 進数として表現
- %X
- 大文字の16 進数として表現
特に%dの10進数表示と、%sの文字列フォーマットは必ず覚えましょう。
※ これだけ覚えれば、ふわっと語ることができます!
printf文字出力
PHPでのフォーマットでの文字出力の方法のひとつprintfについて説明します。
- 関数名
- printf
- 解説
- フォーマット済みの文字列を出力する
- 戻り値
- 出力した文字列の長さを返却
int printf ( string $format // 出力フォーマット [, mixed $args [, mixed $... ]] // 出力したいすべてのパラメータ )
printf出力サンプル(各記述子)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>printf出力サンプル</title>
</head>
<body>
<p>
<?php
printf("%%b = %b<br/>", 10);
printf("%%c = %c<br/>", 65); // ASCIIでの65は文字列'A'となる
printf("%%d = %d<br/>", 10);
printf("%%d(マイナス) = %d<br/>", -10);
printf("%%e = %e<br/>", 10.12);
printf("%%u = %u<br/>", 10);
printf("%%u(マイナス) = %u<br/>", -10); // 符号なしのため、正しく表示されない
printf("%%f(整数) = %f<br/>", 10);
printf("%%f(小数点) = %f<br/>", 10.12);
printf("%%f(マイナス小数点) = %f<br/>", -10.12);
printf("%%o = %o<br/>", 10);
printf("%%s = %s<br/>", "printfで文字出力");
printf("%%x = %x<br/>", 10);
printf("%%X = %X<br/>", 10);
?>
</p>
</body>
</html> 出力結果
出力ソース

printfでの改行は、出力の終わりに“</br>”を付け加えることにより行うことができます。
また、フォーマットを複数組み合わせて出力を行う事も可能です。
複数フォーマットを使用しての文字列出力のサンプルを下に載せます。
printf複数フォーマットサンプル
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>printf複数出力サンプル</title>
</head>
<body>
<p>
<?php
printf("あなたの名前は、%sで、年齢は%dです。<br/>", "ホゲホゲ", 30);
?>
</p>
</body>
</html> 出力結果
出力ソース

vprintf文字生成
今回の二つ目のフォーマット文字出力方法vprintfについて説明します。
printfと基本的に使用方法は一緒ですが、関数に受け渡す引数が可変長ではなく配列の引数となります。
- 関数名
- vprintf
- 解説
- フォーマット済みの文字列を出力する
- 戻り値
- 出力した文字列の長さを返却
int vprintf ( string $format // 出力フォーマット array $args // 出力したいすべてのパラメータ配列 )
vprintf文字出力サンプル
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>vprintf出力サンプル</title>
</head>
<body>
<p>
<?php
$array1 = array("ホゲホゲ", 30);
$array2 = array("ホゲホゲ2", 20);
vprintf("あなたの名前は、%sで、年齢は%dです。<br/>", $array1);
vprintf("私の名前は、%sで、年齢は%dです。<br/>", $array2);
?>
</p>
</body>
</html> 出力結果
出力ソース

配列については今後のブログで説明しようと思っているので、今の段階でわからない方はふわっとこんなのがあるんだ程度でOKです。
sprintf文字生成
指定フォーマットで文字列を新たに生成するsprintfを紹介します。
この関数はフォーマットを元に生成された文字列を返却する関数となります。
※この関数だけでは、画面出力されませんので気を付けてください。
- 関数名
- sprintf
- 解説
- フォーマット文字列formatに基づき生成された文字列を返します。
- 戻り値
- フォーマット文字列formatに基づき生成された文字列
string sprintf ( string $format // 出力フォーマット [, mixed $args [, mixed $... ]] // 出力したいすべてのパラメータ )
sprintf文字出力サンプル
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>sprintf出力サンプル</title>
</head>
<body>
<p>
<?php
$hoge = sprintf("あなたの名前は、%sで、年齢は%dです。<br/>", "ホゲホゲ", 30);
$hogehoge = sprintf("私の名前は、%sで、年齢は%dです。", "ホゲホゲ2", 20);
echo $hoge;
echo $hogehoge;
?>
</p>
</body>
</html> 出力結果
出力ソース

次回
いかがでしたか?
今回は、フォーマットを使用した文字出力方法について勉強していきました。
このフォーマットを使っての文字出力が語れるだけで、知ってる雰囲気が出せるのでぜひ覚えてみてください!
次回は、変数について解説します。
《関連記事》
【PHPをふわっと語りたい人のための入門講座】 PHPのゆるっとした基礎知識について
【PHPをふわっと語りたい人のための入門講座】 ものすごく簡単な文字列出力(echo, print)
アシスタントマネージャー Higuchi 技術を中心に、言語の入門編や便利なライブラリ紹介など、技術のお役立ち情報をご紹介します。