menu
書いてる野郎
orebike@gmail.com
ダブルクォートの文字列リテラル中ではカッコに挟んだ変数が展開される
$piyo = "ぴよぴよぴよ"; $hoge = "これはぴよ→{$piyo}"; // => "これはぴよ→ぴよぴよぴよ"
連想配列から一発で変換してくれる。URLエンコードも同時に完了してくれる。
$a = array( "hoge" => "ほげ", "piyo" => "ぴよ", "fuga" => "ふが", ); $b = http_build_query($a);
プレーンなテキストの出力を画面にするときは便利
echo nl2br(" 今日は いい 天気ですね。 ");
echo htmlspecialchars('<img src="hoge.jpg" />');
本当にタグだけがすっぽりなくなったように処理される。
echo strip_tags('<p>hogehoge</p>'); //=> "hogehoge"
スペース区切りの検索ワードをバラすならこんな感じ。
$hoge = preg_split("/[ ]+/u", $keyword);
見えないかもしれんが[]
の中に半角スペースと全角スペースが書いてある。
UTF8のマルチバイト文字対応するにはなんか u 指定が必要なようだ。
特に理由がなければpreg系が一番汎用性もありパフォーマンスもいいみたいなのでこれ一本にしようと思う。
if(preg_match('/hoge/', 'hogepiyo')){ //まっちした }else{ //まっちしなかった }
基本的な文字列生成の仕組みであるダブルクォートやシングルクォートので挟む書式はそれ自体で改行を含むことをサポートしている。 なのでわざわざ切ってドットで連結したり、1行にしてエスケープシーケンスを挟む必要は無い
$hoge = "改行も→ 含めてOK ";
PHPでは識別子が解釈不能だった場合それは文字列リテラルとみなされるっぽい・・・確信ないけど。 おそらくこの挙動はシェルスクリプト等から引き継いでいると思われる。
自分は書かないけど他人が書いたコードを読むときに妙な書き方をしている場合の参考として
つまりこのように出力される
echo hogehoge; //=> hogehoge
この hogehoge の部分を文法上なんというか知らんが・・・文字列と解釈されて出力されている
当然
echo hogehoge . '123'; //=> hogehoge123
このような結合操作もできるし
$piyo = array('hogehoge' => 123); ehco $piyo[hogehoge]; //=> 123
のように連想配列のキーとしても通用する。
しかし、解釈可能だった場合はそちらが優先される
define('hogehoge', '456'); echo hogehoge;//=> 456
キモすぎる。