_onichannn

PHPで配列の構造を破壊せずに、先頭と最後の要素を取得する方法。

必要に駆られてやった時のメモ。

$last = end($array);
$first = reset($array);

end()は配列の参照ポインタが一番後ろになるので先に記述。
スマートだね。

PHPで文字列中の空白(全/半角)を一機に取り除く。

全角スペースも半角スペースもまとめて一機に取り除く方法があったのでメモ。

$str = '文字列';
$str = trim(mb_convert_kana($str, 's'));

これは便利。

PHPでファイルを開いて、一行ずつ読み込むやーつー。

file()とかfile_get_contents()でファイルを読み込むと
一気にデータがぶちこまれるから便利なんだけど、
ファイルの中身が数万行とかあると、メモリの使い方的によろしくないので
1行ずつ検証していきたい時用。

$file= 'example.txt';
$text = fopen($file, 'r');
for($l = 1; !feof($text); $l++){
    $line = fgets($text);
    if($line){
        //処理を記述
    }
}
fclose($text);

ファイルの存在チェックもかますとなおベター。

PHPのmb_send_mail()を使用する際の設定。

文字化け対策とか引数の順番とか
細かい部分で毎回調べてる気がするのでザックリめも。

$to = ''; //宛先アドレス
$subject = ''; //題名
$body = ''; //本文
$sender = ''; //送信者名
$from = ''; //送信元アドレス

mb_language('ja');
mb_internal_encoding('UTF-8');
$from = 'From: '.mb_encode_mimeheader($sender).' <'.$from.'>';
$body = mb_convert_encoding($body, 'ISO-2022-JP');
mb_send_mail($to, $subject, $body, $from);

とりあえずこれでメールは送信される(はず)。
sendmailのポート問題とかはまた今度。

.htaccessでURLをwww無しに統一する。

1, wwwありでアクセスされた場合のルートディレクトリに.htaccessファイルを設置。
2, 以下を記述。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.net
RewriteRule ^(.*) http://example.net/$1 [R=301,L]

完了。

google-code-prettifyの導入。

1, まずはココからJSとCSSをダウンロード。
2, DLしたファイルを解凍して出てきたフォルダの中のdistrib/google-code-prettify/の中にあるprettify.jsとprettify.cssをサーバーにアップロード。
3, 以下のようにして読み込む。

<head>
<link rel="stylesheet" type="text/css" href="prettify.css" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="prettify.js"></script>
</head>
<body onload="prettyPrint()">
<!--bodyタグのonloadで上記関数を実行すること。-->
</body>

これで準備完了
あとは、コードとしてハイライトしたい部分を以下のようにpreタグで囲む。

<pre class="prettyprint linenums"></pre>
<!--linenumsクラスをはずすと左に行番号がでなくなる。-->

またtwitter bootstrapと併せて利用する場合はpretty.cssが競合を起こして表示が微妙におかしくなるので、その場合はpretty.cssの中身を以下にごっそり置き換えると治る。

.com { color: #93a1a1; }
.lit { color: #195f91; }
.pun, .opn, .clo { color: #93a1a1; }
.fun { color: #dc322f; }
.str, .atv { color: #D14; }
.kwd, .linenums .tag { color: #1e347b; }
.typ, .atn, .dec, .var { color: teal; }
.pln { color: #48484c; }
 
.prettyprint {
  padding: 8px;
  background-color: #f7f7f9;
  border: 1px solid #e1e1e8;
}
.prettyprint.linenums {
  -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
     -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
          box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
}
 
/* Specify class=linenums on a pre to get line numbering */
ol.linenums {
  margin: 0 0 0 33px; /* IE indents via margin-left */
} 
ol.linenums li {
  padding-left: 12px;
  color: #bebec5;
  line-height: 18px;
  text-shadow: 0 1px 0 #fff;
}

以上完了。

apple-touch-iconの導入。

1, まずはiPhone用とiPad用のアイコンをそれぞれ用意。iPhone用は114x114px、iPad用は144x144pxで作成し、拡張子はPNGで保存する。
2, 次に公開ディレクトリに作成したPNGをアップロード。
3, 以下のようにheadタグ内にlinkタグを追加してやる。

<!--iPhone用-->
<link href="apple-touch-icon-114x114.png" type="image/x-icon" rel="apple-touch-icon" size="114x114" />
<!--iPad用-->
<link href="apple-touch-icon-144x144.png" type="image/x-icon" rel="apple-touch-icon" size="144x144" />

以上!
意外と簡単。

Cakephp2.2にDebugKitを導入する。

忘れないようにメモ。

ココからDebugKitをダウンロードして解凍。フォルダ名を”DebugKit”にリネーム。pluginsディレクトリにフォルダごとぶち込む。
次にAppController.phpに以下を記述。

class AppController extends Controller {
  public $components = array('DebugKit.Toolbar'); //この行を追加。
}

最後にapp/Config/bootstrap.phpのどこでもいいから以下を追加。

CakePlugin::load('DebugKit');

以上で完了。
core.phpでデバッグレベルが0とかになってると出てこないので注意。