hnwの日記

2009-02-01から1ヶ月間の記事一覧

array_unique関数がPHP5.2.9から後方互換性を失いました

PHP

追記(2009/06/26):PHP 5.2.10以降、この問題は修正されています。「array_unique関数がPHP5.2.10から後方互換性を取り戻します」も併せてご覧ください。 2/26にPHP5.2.9がリリースされましたが、このバージョンからarray_unique関数が後方互換性を失いま…

PHPのsort関数は相当おかしい

PHP

追記(2009/02/28 15:35):ソートする配列の要素が数値または数値形式の文字列のみの場合は、が推移律を満たすので、この記事のような矛盾は起こりません。念のため。オヤジギャグがこらえられなくなったら立派なオヤジだと思います。それはさておき、今日…

mb_ereg系の関数でUTF-16を扱う方法

PHP

PHPでmb_regex_encoding("UTF-16")すると、一見mb_ereg系関数が期待通りに動きません。

PHPでマルチバイト対応のtrim関数を作る

PHP

(2009/06/29)追記4:本記事のmb_trim関数が動かない環境があったので、詳細を「PCREはUnicode文字プロパティをサポートするとは限らない」にまとめました。よりポータブルなmb_trim関数も紹介していますので、併せてご覧ください。 追記:「mb_ereg_match(…

mb_check_encodingは何をチェックするのか(その3 UTF-8編)

PHP

(2009/10/05追記)「サロゲートペアに相当する3バイト表現も正しいとみなしている」という件はバグとしてPHP5.3.0から修正されているようです。id:moriyoshiさんに超感謝。 PHPのmb_check_encoding関数の調査、おそらく今回が最終回です。今回はUTF-8につい…

mb_check_encodingは何をチェックするのか(その2 EUC-JP編)

PHP

前回に引き続き、PHPのmb_check_encoding関数について調べてみます。今回はEUC-JP、eucJP-win、CP51932の3つについて調べてみました。

mb_check_encodingは何をチェックするのか(その1 SJIS編)

PHP

(2009/02/15 17:20)「個人的な感想」を追記しました。また、下記はPHP5.2.1以降の挙動です。PHP5.2.0以前のmb_check_encodingは更にカオスなので、あまり使い物にならないと思います。 (2009/02/16 12:30)追記2:バグっぽいと思った件は本当にバグで、修正が…

PHPとRubyとPythonのparserをいじめてみた

PHP

下記のようなプログラムを与えると、PHPのparserが「無理っす」と言って死にます。