php

ループ中にフラグを立てる事があったかどうかを判別する。ちょっとしたスニペット

php

$value) $flag = ($flag || isError($value)) if($flag) //エラー検出 ループ中の処理結果とかで、例えばちょっとしたエラーが、あったかどうかを判別するちょっとしたスニペット。 $value) $flags[] = isError($value); if(in_array(true, $flags)) //エ…

phpのPCREな正規表現でASCII制御文字を検出するパターンのメモ

php

IEでjpegとPNG画像をアップロードする際、MIME Type(Content Type)が普通と違う件

php

アップロードされたファイルが画像かどうかを判別する際、MIME Typeを見る方法があります。 この情報は、ブラウザの自己申告なため、悪意をもって全然別のMIME Typeを送信する事も可能*1ですが、IEもMIME Typeを偽装?してきます。 jpeg image/pjpeg PNG imag…

XAMPP Lite 1.7.0 でApacheが落ちる件。 [notice] Parent: child process exited with status 3221225477 — Restarting.

php

XAMPP Lite 1.7.0 を使っていると、Apacheが落ちました。 解決は出来たので、メモしておきます。 検索した感じ、XAMPP 1.7.0 でも XAMPP Lite 1.7.0 でも発生しているようです。 これを書いてる今は 1.7.2 がリリース済みですが、これで発生するか直ってるか…

phpのregister_shutdown_function()で登録するシャットダウン関数と、グローバルスコープ上のオブジェクトの__destruct()の優先順位

php

デストラクタの方を先に実行してほしかったのですが、どうもシャットダウン関数が先に実行されているようです。 公式ドキュメントのコメントで、簡単な例を提示してくれているのを見つけたので、今後の為にも記録しておきます。 デストラクタを持つオブジェ…

PHPのif文の条件式での代入ではまった件

php

if($foo = false) この様に、if文の条件式で代入する事ができます。 通常、代入されてから条件式が評価されるはずです。 $fooにfalseが代入されているので、この場合は条件式もfalseです。 if($foo = false || true) はまったのは、このケースです。 $foo = …

第42回PHP勉強会@関東に行ってきました。

php

events.php.gr.jp - 第42回PHP勉強会@関東出かける前にやる事があったので、開始には間に合いませんでしたが、目的の一つであるwozozoさんのrhaco2の発表に間に合ってよかったです。 前半は聴けなくって、後半は合宿報告などゆるい感じの発表が多かったので…

bugs.php.netに報告してみた。が、メーリングリストの方がより良かった件

php

ちょっとしたバグ、というか公式ドキュメントの日本語訳に、誤訳ぽいところがあったので報告してみました。 http://bugs.php.net/bug.php?id=47207 ただ、日本語ドキュメントについての報告なら、PHP-doc メーリングリストに投げた方がすばやく対応してもら…

ctype_digit()が期待ハズレだった件

php

phpは型がとてもゆるい言語です。 普段は3と"3"の違いを殆ど意識する事無くコーディングが出来ます。 外部からHTTP POSTされた"3"と、とあるメソッドがreturnした3を、同じメソッドに渡して処理する事も往々にしてあります。 そんなゆるいコーディングをして…

phpの内部変数を確認するメソッド

php

phpの組み込み関数 void debug_zval_dump ( mixed $variable ) Xdebugの関数 void xdebug_debug_zval( [string varname [, ...]] ) どうも、debug_zval_dump()の方は、refcountが微妙に参考にしにくい仕様みたいです。 $var = 'foo'; debug_zval_dump($var);…

Xdebugがvar_dump()をオーバーロードする件

php

Xdebugを導入すると、php組み込み関数のvar_dump()を見やすくhtmlで整形してくれます。 これはすごく便利ですが、本来の動きを変えてしまうので、邪魔になるときもあります。 もちろん、その辺は考えられていて、このようにすることで、この機能を無効化する…

PHPの拡張モジュールとExtension

php

phpの拡張モジュールとExtensionは同じものを指していた。 phpにはPEARやPECLをはじめ、様々なライブラリがあります。 PEARはphpで書かれたライブラリというイメージですが、PECLはC言語で書かれたライブラリです。 そういったC言語で書かれたphpのライブラ…