php_opendogs 0.5.0 Released

php_opendogs-0.5.0.tgz


変更点

  • 数値文字参照XHTML 1.0で定義されている文字実体参照UTF-8としてデコードする関数 string od_unistr_decode_entity(string str[, int flags]) を追加
    • 第一引数はデコード対称の文字列、第二引数はデコードオプションで下記定数のビット和で表す (default: OD_ENT_IGNORE_NUL)
      • OD_ENT_STRICT: セミコロンで終わっていない参照、未定義の実体参照、不正なコードポイントがあった場合、E_WARNINGを発し、falseを返す
      • OD_ENT_ALLOW_CTRL: 全ての制御文字をデコードする (ここでいう「制御文字」は「制御文字の数値文字参照」を指し、文字列に含まれる制御文字のバイナリデータではない)
      • OD_ENT_CTRL_TO_SPACE: 制御文字(0x00-0x1F, 0x7F-0x9F)をスペース(0x20)に変換する
      • OD_ENT_NBSP_TO_SPACE: ノンブレーキングスペース(  0xA0)をスペースに変換する
      • OD_ENT_IGNORE_NUL: NUL以外の制御文字をデコードし、NULは数値文字参照のままにする
      • OD_ENT_IGNORE_CTRL: すべての制御文字を数値文字参照のままにする
      • OD_ENT_REMOVE_NUL: NUL以外の制御文字をデコードし、NULは削除する
      • OD_ENT_REMOVE_CTRL: すべての制御文字を削除する
      • OD_ENT_WARN_NUL: NULがあった場合、E_WARNINGを発し、falseを返す
      • OD_ENT_WARN_CTRL: 制御文字があった場合、E_WARNINGを発し、falseを返す
  • od_unichr(), od_unichr_array(), od_uniord(), od_uniord_array() の第二引数にtrueを与えたとき、文字列/コードポイントの代わりに文字のUnicodeプロパティ、スクリプト、ブロックを含む情報を返すようにした
    • この機能を利用するにはアーカイブに含まれるunicode_propdb.gzを適当な場所にコピーし、そのパスをphp.iniのopendogs.unicode_propdbディレクティブで指定しておく必要がある (例: opendogs.unicode_propdb = /usr/local/share/pear/data/opendogs/data/unicode_propdb.gz)


サンプル1

php -r 'echo od_unistr_decode_entity("-<乾坤一擲>-
");'
-<乾坤一擲>-


サンプル2

php -r 'print_r(od_uniord_array("乾坤一擲", true));'
Array
(
    [0] => Array
        (
            [0] => 20094 # コードポイント
            [1] => 104   # ブロックID: 定数OD_UBLOCK_*の値に等しい
            [2] => 11    # プロパティID: 定数OD_UPROP_*の値に等しい
            [3] => 45    # スクリプトID: 定数OD_USCRIPT_*の値に等しい
            [utf-8] => 乾
            [block] => CJK Unified Ideographs
            [property] => Lo
            [property_alias] => Other_Letter
            [script] => Han
        )

    [1] => Array
        (
            [0] => 22372
            [1] => 104
            [2] => 11
            [3] => 45
            [utf-8] => 坤
            [block] => CJK Unified Ideographs
            [property] => Lo
            [property_alias] => Other_Letter
            [script] => Han
        )

    [2] => Array
        (
            [0] => 19968
            [1] => 104
            [2] => 11
            [3] => 45
            [utf-8] => 一
            [block] => CJK Unified Ideographs
            [property] => Lo
            [property_alias] => Other_Letter
            [script] => Han
        )

    [3] => Array
        (
            [0] => 25842
            [1] => 104
            [2] => 11
            [3] => 45
            [utf-8] => 擲
            [block] => CJK Unified Ideographs
            [property] => Lo
            [property_alias] => Other_Letter
            [script] => Han
        )

)