/var/log/masayoshi/masayoshi.life.log

とりあえず、書きたいこと書くだけ。

vsprintf



とりあえず、メモ書き



  • vsprinf


sprintfの引数を配列で指定できるようしたバージョン。




    • 引数が一定じゃない

    • スマートに行きたい



時に有効かも、MySQLへのアクセサを書いたときは役に立ちました。


参考コード



<?php
  $data = array(
   "水曜どうでしょう",
   "1997",
   "バラエティ番組",
  ) ;
  $text = "%sとは%d年より放映されている%sである<br>" ;
  echo vsprintf($text,$data) ;
  $data = array(
   "相棒",
   "2001",
   "刑事ドラマ"
  ) ;
  echo vsprintf($text,$data) ;
?>



出力内容



水曜どうでしょうとは1997年より放映されているバラエティ番組である


相棒とは2001年より放映されている刑事ドラマである



$textの内容はいじってませんよ、いじったのは$dataの配列だけ。


それだけで



  • バラエティ番組の説明

  • 刑事ドラマの説明


ができたわけですからね、実用的な例はこちら





<?php
  $data = array(
   "モーニング娘。",
"プラチナ9DISCO"
  ) ;
  $text = "select * from music_list where artist='%s' and album='%s'" ;
  echo vsprintf($text,$data) ;
?>

出力例



select * from music_list where artist='モーニング娘' and albun='プラチナ9DISCO' ;



こんな風にmusic_listというテーブルの中から



という条件に一致する曲を出力するというSQL文を書くときにも有効。


これはSQLインジェクションとか考慮してないから実際に使うとしたらエスケープ系の実装も必須になるかな。