HOME   入り口   MENU


No19.値だけが欲しい〜 ---- sscanf関数




フォーマットが決まっている文字列から
値だけを取り出してくれるのがsscanfです。
フォーマットの形式はprintfといっしょ。
処理はprintfと逆の処理になります。
例えば 
2003年06月04日 12時33分44秒
という値がある文字列にあったとしましょう。
配列変数=sscanf(文字列,フォーマット,[変数,変数,変数]);


<?php
$ardata=sscanf("2003年06月04日 12時33分44秒","%d年%d月%d日 %d時%d分%d秒"); foreach($ardata as $value){
    echo $value ."<BR>";
}
?>

実行すると表示する値は

2003
6
4
12
33
44


scanfで分解された値は配列の形で返ってきます。
(dは引数を整数とみなして10進数で表現する型指定子です。)
なので上のコードでは配列の値をforeachを使って表示しています。
文字列を分解して値を取り出せてますね。

同じ例を戻り値なしで後ろに変数オプションをつけてみましょう。
値の数は6個あるので、後ろに6個変数をつけます。<$a,$b,$c,$d,$e,$f>
<?php
sscanf("2003年06月04日 12時33分44秒","%d年%d月%d日 %d時%d分%d秒",$a,$b,$c,$d,$e,$f);
echo $a ."<BR>";
echo $b ."<BR>";
echo $c ."<BR>";
echo $d ."<BR>";
echo $e ."<BR>";
echo $f ."<BR>";
?>

実行すると表示する値は

2003
6
4
12
33
44
と、オプションに変数を渡すと順番に結果を格納してくれるのです。(^_^)



サンプル: こう書くと   ==>    こうなる!




(オマケ)
戻り値は配列なのでlist()を使えば引数にした変数に値を返してくれるので
利用すると便利です。
<?php
list($a,$b,$c)=sscanf("あああ いいい ううう","%s %s %s");
echo $a ."<BR>";
echo $b ."<BR>";
echo $c ."<BR>";
?>

実行結果は
あああ
いいい
ううう
となります。











  HOME