文字列を操作する02





☆★データーでの確認★☆

文字列を整形する


printf関数 sprintf関数



printf関数とは

  • 文字データーや数値データーを文字列のように扱い、所定のフォーマットに整形して画面に出力する。第1引数には整形したいフォーマットを「' '」で囲んで記述。このフォーマットは「 % 」で書き始める。第2引数以降にもとのデーターを指定する。



sprintf関数とは

  • 整形した結果を繰り返り値として返すだけで画面には出力されない。整形結果の文字列を後処理してから画面表示する場合や、内部的に処理する(ファイルに保存する)場合に使う。



▼表 「 % 」の直後に記述する文字/記号
文字/記号処理の内容
0その次に指定した数の桁数にデーターを整形し、それに満たない桁はゼロで埋める
半角スペース指定桁数に満たない桁が半角スペースで埋める
.その次に指定した数に小数点以下の桁数を合わせる
xデーターも16進数に変換する
bデーターを2進数に変換する
oデーターを8進数に変換する
cデーターを文字コードと判断して、それに対応する文字列を出力する

▼表 第2引数をどのようなデーターとみなすか指定する文字
文字第2引数の扱い
d第2引数を整数として扱う
f第2引数を浮動小数点として扱う
s第2引数を文字列として扱う


【 書式 】

PHPスクリプト

<?php
	$data = 12345.6789;
	
	// 例1:$dataを整数とみなして8桁のゼロ埋め
	printf ("%08d" , $data);
	print "<br>";
	
	// 例2:$dataを整数とみなして8桁のスペース埋め
	printf ("%8d" , $data);
	print "<br>";
	
	// 例3:現在日付の各要素を整数とみなしてフォーマットする
	$now = getdate();
	printf ("%4d年%02d月%02d日" , $now[year], $now[mon], $now[mday]);
	print "<br>";
	
	// 例4:$dataを浮動少数点とみなして小数点以下3桁まで出力
	printf ("%.3f", $data);   // .(ドット)を繋げる
	print "<br>";
	
	// 例5:$dataを文字列とみなして20桁のゼロ埋め
	printf ("%020s", $data);
	print "<br>";
	
	// 例6:2番目の引数を整数とみなして16進数で出力
	printf ("%x", 256);
	print "<br>";
	
	// 例7:2番目以降の3つの引数を文字コードとしてそれに対応する文字を出力
	printf ("%c %c %c", 65, 66, 67);
	print "<br>";
	
	// 例8:sprintfの使用
	$strformat = sprintf("%08d", $data);
	print $strformat . "<br>";
?>


ソースコード


ソースコード【 HTML 】

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="description" content="文字列の処理">
<meta name="keywords" content="PHP,数値の処理">
<meta name="viewport" content="width=device-width"> 
<title>文字列の処理</title>
<!-- IE対策 -->
<!--[if ite IE 9]>
<script src="http://html5shiv.googlecode.com/svn/ttunk/html5.js"></script>
<![endif]-->

<!--[if lte IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<![endif]-->

<style>
  article,aside,dialog,figure,footer,header,
  hgroup,menu,nav,section{display: block;}
</style>
<link href="css/style2.css" rel="stylesheet" type="text/css" media="all">
</head>

<body>

<div id="container">
<header>
	<h1>文字列を操作する</h1>
</header>

<div class="wrapper">
<section>
	<h1 class="title_top">文字列を整形する</h1>
<p class="point"><span class="p">P</span>oint</p>

	<h2 class="title_main">printf関数 sprintf関数<span class="title_main_txt">&nbsp;</span></h2>
		<dl>
			<dt>printf関数とは</dt>
			<dd>文字データーや数値データーを文字列のように扱い、所定のフォーマットに整形して画面に出力する。第1引数には整形したいフォーマットを「' '」で囲んで記述。このフォーマットは「 % 」で書き始める。第2引数以降にもとのデーターを指定する。
</dd>
</dl>
		<dl>
			<dt>sprintf関数とは</dt>
			<dd>整形した結果を繰り返り値として返すだけで画面には出力されない。整形結果の文字列を後処理してから画面表示する場合や、内部的に処理する(ファイルに保存する)場合に使う。
</dd>
</dl>

		<table>
			<caption>▼表 「 % 」の直後に記述する文字/記号</caption>
		<tbody>
			<tr>
				<th>文字/記号</th><th>処理の内容</th>
			</tr>
			<tr>
				<td class="title_td">0</td><td>その次に指定した数の桁数にデーターを整形し、それに満たない桁はゼロで埋める</td>
			</tr>
			<tr>
				<td class="title_td">半角スペース</td><td>指定桁数に満たない桁が半角スペースで埋める</td>
			</tr>
			<tr>
				<td class="title_td">.</td><td>その次に指定した数に小数点以下の桁数を合わせる</td>
			</tr>
			<tr>
				<td class="title_td">x</td><td>データーも16進数に変換する</td>
			</tr>
			<tr>
				<td class="title_td">b</td><td>データーを2進数に変換する</td>
			</tr>
			<tr>
				<td class="title_td">o</td><td>データーを8進数に変換する</td>
			</tr>
			<tr>
				<td class="title_td">c</td><td>データーを文字コードと判断して、それに対応する文字列を出力する</td>
			</tr>
		</tbody>
		</table>

		<table>
			<caption>▼表 第2引数をどのようなデーターとみなすか指定する文字</caption>
		<tbody>
			<tr>
				<th>文字</th><th>第2引数の扱い</th>
			</tr>
			<tr>
				<td class="title_td">d</td><td>第2引数を整数として扱う</td>
			</tr>
			<tr>
				<td class="title_td">f</td><td>第2引数を浮動小数点として扱う</td>
			</tr>
			<tr>
				<td class="title_td">s</td><td>第2引数を文字列として扱う</td>
			</tr>
		</tbody>
		</table>

	<h2 class="txt_web">&lt;&nbsp;ブラウザでの表示&nbsp;&gt;</h2>
	<div class="txt_php">
<?php
	$data = 12345.6789;
	
	// 例1:$dataを整数とみなして8桁のゼロ埋め
	printf ("%08d" , $data);
	print "<br>";
	
	// 例2:$dataを整数とみなして8桁のスペース埋め
	printf ("%8d" , $data);
	print "<br>";
	
	// 例3:現在日付の各要素を整数とみなしてフォーマットする
	$now = getdate();
	printf ("%4d年%02d月%02d日" , $now[year], $now[mon], $now[mday]);
	print "<br>";
	
	// 例4:$dataを浮動少数点とみなして小数点以下3桁まで出力
	printf ("%.3f", $data);   // .(ドット)を繋げる
	print "<br>";
	
	// 例5:$dataを文字列とみなして20桁のゼロ埋め
	printf ("%020s", $data);
	print "<br>";
	
	// 例6:2番目の引数を整数とみなして16進数で出力
	printf ("%x", 256);
	print "<br>";
	
	// 例7:2番目以降の3つの引数を文字コードとしてそれに対応する文字を出力
	printf ("%c %c %c", 65, 66, 67);
	print "<br>";
	
	// 例8:sprintfの使用
	$strformat = sprintf("%08d", $data);
	print $strformat . "<br>";
?>
	</div>
<div class="txt_kome clearfix">
	<p><span class="txt_mark"></span><span class="txt_kome">例2では$dataの値が8桁に整形され、その桁に満たない部分はスペースで埋められてHTMLソースが生成される。が、webブラウザ上ではスペースは無視されるので、見た目の効果はない。</span></p>
	<p><span class="txt_mark"></span><span class="txt_kome">データーベース上では有効なデーター形式になっている。</span></p>
</div>

</section>
<!-- /.wrapper -->
</div>

<footer>
	<h1>PHPスクリプトの基本</h1>
		<small>Copyright&copy; 2013 webry All Rights Reserved.</small>
		<small>参考資料:<span class="txt_small"><a href="d.hatena.ne.jp/webry/20130825/p2#php_sample_site" target="_blank">速攻&amp;活用! Web開発者のためのPHPベストサンプル集</a></span></small>
</footer>

<!-- /#container -->
</div>
</body>
</html>

ソースコードCSS

@charset "utf-8";

/* resetcss
------------------------------------------------------ */
html,body,div,h1,h2,h3,h4,h5,h6,p,blockquote,pre,address,ul,ol,li,dl,dt,dd,table,th,td,form,fieldset {

    margin: 0;
    padding: 0;
    line-height: 1.5;
	  font-family:
	    "Hiragino Kaku Gothic ProN",
 	   Meiryo, 
 	   sans-serif;
      }

    a {
     text-decoration: none;
    }
 
     ul, ol {
      list-style-type: none;
     }	
	  
    img {
      border: 0;
	  vertical-align: bottom;
    }

/* font
---------------------------------------------------- */
.f_weight {font-weight: bold;}
h2 span.title_main_txt {	font-size: 86%}
footer h1,p.txt_kome  {font-size: 13px;}
table caption,footer small .txt_small {font-size: 14px;}
h2.txt_web {font-size: 16px}

/* link
----------------------------------------------------- */
.txt_small a:link {color:#FFA4E9;}
.txt_small a:visited,.txt_small a:hover {color:#00AEAE;}
.txt_small a:active {color:#00CC14;}

/* base
---------------------------------------------------- */
#container {
	width: 960px;
	margin: 0 auto;
	color: #333;}

/* layout
---------------------------------------------------- */
header {
	text-align: center;
	padding: 24px 50px 18px;
	background-color: #36F;
	border-radius: 18px / 18px;
	color: #fff;}

header h1 {
	border-bottom: 5px dotted #fff;}

.wrapper  {
	width: 91%;
	margin: 0 auto;}

h1.title_top {
	margin: 20px 0 12px;
	padding: 3px	 0 0 5px;
	border-top: 1px solid #06F;
	border-right: 1px solid #06F;
	border-bottom: 1px solid #06F;
	border-left: 18px solid #06F;}

h2.title_main {
	margin: 0 0 6px 30px;
	padding: 0 0 3px 70px;
	font-weight: bold;
	border-bottom: 1px solid #aaa;
	color:#F00;}

h2 span.title_main_txt {
	color: #333;}

.point {
	line-height: 1.0;
	font-family: 'Maven Pro', Helverica, Arial, sans-serif;
	float: left;
	background-color: #F60;
	padding: 12px 26px;
	border-radius: 55px / 48px;
	text-align: center;
	font-weight: bold;
	font-size: 14px;
	color: #fff;}

.point .p {
	display: block;
	font-size: 32px;
	line-height: 1.0;}

dl dt {
	margin: 0 0 0 88px;
	font-weight: bold;}

dl dd {
	margin: 0 0 18px 128px;}

/* .table
------------------------------------------------- */
table {
	width: auto;
	margin: 35px auto 0;
	border: 2px #001693 solid;
	border-collapse: collapse;}

table th,table td {
	border: 1px #001693 solid;
	padding: 5px 16px 3px;}

table th {
	background-color: #BFCBFF;}

td.title_td {
	text-align: center;
	font-weight: bold;
	background: #DBE2FF;
	color: #FF2F2F;}

/* .txt_php
-------------------------------------------------------- */
h2.txt_web {
	margin: 30px 0 0 0;
	color: #983A48;}

.txt_php {
	margin: 0 0 10px 0;
	padding: 20px 15px;
	border: 2px dotted #3FF;
	background: #ECF9FF;}

div.txt_kome {
	padding: 6px 12px;
	border: 2px dotted #C33;
	border-radius: 12px / 12px;
}
p span.txt_mark {
	float: left;
	font-weight: bold;
	color: #F33;}

p span.txt_kome {
	width: 97%;
	float: left;
	margin: 0 0 0 5px;}

p span.txt_mark_mid {
	display: block;
	float: left;
	margin: 0 0 0 55px;
	font-weight: bold;
	color: #F33;}

p span.txt_kome_mid {
	display: block;
	margin: 0 0 0 75px;}

dl dd ul li {
	background: url(../../images/circle.gif) no-repeat left 0.3em;
	padding-left: 20px;}

/* footer
------------------------------------------------ */
footer {
	text-align: center;
	margin-top: 45px;
	padding: 5px 0;
	background-color: #36F;
	border-radius: 6px / 6px;
	color: #fff;
	overflow: hidden;}

footer small {
	display: block;}

footer small + small {
	padding: 5px 0;}

/* clearFix
--------------------------------------------- */
.clearfix:after {
  content: ""; 
  display: block; 
  clear: both;}

ブラウザで表示【 FireFox




IEtester【 IE7




IEtester【 IE8 】




IEtester【 IE9



ブラウザで表示【 Chrome




HTML5 Outliner【 Chrome