mbstring
久しぶりに mbstring モジュール(特にマルチバイト正規表現)のソースコードを眺めていたのですが、いくつか面白い(知らなかった)挙動がありましたでメモしておきます。 確認した PHP のバージョンは 5.4.10 ですが、PHP 5.0 以降であれば、あまり変わりませ…
mb_ereg_replace_callback() の追加(PHP 5.4.1) PHP 5.4.1 で mb_ereg_replace_callback() が追加されました。正規表現にマッチした文字列に対してコールバック関数による置換ができます。以前から、mb_ereg_replace() のオプションに "e" を設定すると同様…
PHP 5.4 に向けて、久しぶりに PHP の mbstring に対して機能追加と修正がありましたので、メモしておきます。 PHP 5.4.0 の正式リリースまでに「十分なテストが必要」とのことですので、気になる方はテストに参加した方が良いと思います。 変更点は以下の通…
PHP 5.2.12 がリリースされました。 PHP 5.2.12 Release Announcement PHP 5.2.12 ChangeLog Release Announcement にも載っていますが、以前、日記に書いた htmlspecialchars() が Shift_JIS の一部の文字を通してしまう問題は、セキュリティ問題として修正…
随分前から書こうと思っていて忘れていたのですが、役に立つ人がいるかもしれませんので、書いておきたいと思います。メールの送信エンコーディングに UTF-8 を使用すれば、機種依存文字という問題を気にする必要はほとんどありませんが、まだ一般的には、IS…
PHP 5.3.0 で mb_encoding_aliases() が追加されました。 この関数は、第1引数に指定した文字コードが mbstring で使用できる場合、そのエイリアス名を配列で返します。引数の文字コードは大文字、小文字を区別しません。また、MIME名やエイリアス名も指定可…
遅くなりましたが、以下の続きです。 mb_detect_encoding() は文字コード判定として使用できるか(その1)) mb_detect_encoding() は文字コード判定として使用できるか(その2)) 今回は ISO-2022-JP、ISO-2022-JP-MS、UTF-16、UTF-16BE、UTF-16LE について、mb_…
参考までに、mb_check_encoding() が内部で何をしているかについて書いておきます。 mb_check_encoding() は mb_convert_encoding() で第2引数と第3引数に同じ文字コードを指定した場合と同じ処理い、元の文字列と、変換後の文字列が同じかどうかで TRUE/FAL…
前回(mb_detect_encoding() は文字コード判定として使用できるか(その1))の続きです。 mb_check_encoding() と mb_detect_encoding() を正規表現として表わして比較してみました。各文字コードごとにまとめます。調査した PHP のバージョンは、5.2.9 で、前…
最近、mb_detect_encoding() について調べていたので、そのメモです。mb_detect_encoding() は文字コード検出を行う関数です(mb_detect_encoding() - PHP マニュアル)。 結論としては、以下の問題があるため、mb_detect_encoding() を文字コード判定には向い…
前の項目からの続きです。 基本的に、PHP 5.2 1 以降(正確には 5.2.8 以降)では、mb_check_encoding() が false を返す場合、以下も false を返します。
確認した PHP のバージョンは PHP 5.2.9 です。
PHP 5.2.9 で mbstring 関係についても多くのバグが修正されました。そのあたりについて、調べたことを PHP の mbstring に関するメモのバグ・セキュリティ問題にまとめました。何か間違いや気付いたことなどがあれば、コメントなどで教えてください。今回の…
リストに5項目(5.〜9.)を追加しました(2008.11.09)。2008.08.08 に PHP4 系の最終版である PHP 4.4.9 がリリースされました。今後は、PHP 4.x はリリースされることはなく、最新の PHP 5.x に移行することが推奨されています。 同じ日にあった PHP4 送別会に…
年末、年始に少し時間があったので、PHP の mbstring についていろいろとまとめてみました。 少しはまとまってきたので、公開します。 PHP の mbstring に関するメモ 何か間違いなどがあれば、メールやここのコメントで教えてください。