PHP vol.36

printf関数

  • 文字列を整形する関数
  • printf
    • 整形して出力
  • sprintf
    • 整形して文字列を返す
  • メリット

フォーマット文字列

  • 第一引数に文字列を入れる。
  • 第二引数からは入れる変数
sprintf('文字列',変数,変数,...);
  • %sなどの指定で整形。
型指定子
%% 「%」自身を表示
%s 引数の文字列→そのまま文字列で表示
%d 10進数→そのまま10進数で表示
%f 浮動小数点数→小数表記
桁数指定
/// 右づめ ///
%6d
/*最低六桁*/

/// 左づめ ///
%-6d

/// ゼロづめ ///
%06d
/* 余った桁をゼロで埋める指定
 * -345 → -00345 */

/// 精度 ///
%6.3f
/* 上の例なら最低幅6、小数点以下3桁
 *  -0.3 → 「-0.300」
 *  3 → 「 3.000」 */

/// 符号 ///
%+6.3f
/* 正負にかかわらず符号を表示する指示
 *  -0.3 → -0.300
 *  3 → +3.000 */

正規表現

  • preg_match
  • mb_ereg_match
  • preg_replace
preg_replace

参考:PHP: preg_replace - Manual

<?php
$mail_addr = 'hanawa-ナントカ@example.co.jp';
$mail_addr2 = 'ナントカ-カントカ@ドメイン名例.jp';
function replace_mailaddress2($mail_addr) {
  return preg_replace('/(hanawa-.*@)example.co.jp$/','\\1ドメイン名例.jp',$mail_addr);
}
function replace_mailaddress3($mail_addr) {
  return preg_replace('/(.*)-(.*)@(.*)$/','$2-$1@$3',$mail_addr);
}
echo replace_mailaddress2($mail_addr)."\n";
echo replace_mailaddress3($mail_addr2)."\n";
?>
hanawa-ナントカ@ドメイン名例.jp
カントカ-ナントカ@ドメイン名例.jp
  • ()で囲んだ値が\\1で呼び出されている。
  • \\1の代わりに$1でもよい。
もし、ハイフンが3つ以上あったらどうなるか?
<?php
$mail_addr2 = 'abc-def-ghi@example.jp';
function replace_mailaddress3($mail_addr) {
  return preg_replace('/(.*)-(.*)@(.*)$/','$2-$1@$3',$mail_addr);
}
echo "before\t".$mail_addr2."\n";
echo "after\t".replace_mailaddress3($mail_addr2)."\n";
before	abc-def-ghi@example.jp
after	ghi-abc-def@example.jp
  • 長く取れるところまで取る(abc-def)

MVCの分け方

  • Model View Controller
PHP制作
Model ロジック(PHPコード)
View HTML(テンプレート)
Controller コントローラー(アクセスを受ける)
index.php
<?php

if (!isset($_GET['action'])) {
  $action = 'login';
} else {
  if (file_exists ('model/'.$_GET['action'].'.php')) {
    $action = $_GET['action'];
  } else {
    $action = 'login';
  }
}

//共通ロジック呼び出し
require_once 'library.php';
//ロジック呼び出し
require_once 'model/'.$action.'.php';
//テンプレート呼び出し
require_once 'view/temp_'.$action.'.php';