PHP4でSQLiteManagerを使う際に

2008/04/06 | SQLite

SQLiteManagerを活用してがんばってSQLiteを使っている。PHP4でSQLiteが使える環境があったのでそちらにも設置してみた。基本的には動作しているようだが、なぜかUTF-8化を実施すると以下のエラーが出る。

Warning: cannot yet handle MBCS in html_entity_decode()

htmlentity関連のエラーだ。マルチバイト文字はhtmlentity関数との相性がよくないような気がする。さて、これを解消する方法は以下の通り(include/common.lib.phpを修正)。

(1) 上記ファイルのどこか適当なところに以下の関数を記述する。
function unhtmlentities($string)
{
  $string = preg_replace(‘~&#x([0-9a-f]+);~ei’, ‘chr(hexdec(“¥¥1″))’, $string);
  $string = preg_replace(‘~&#([0-9]+);~e’, ‘chr(¥¥1)’, $string);
  $trans_tbl = get_html_translation_table(HTML_ENTITIES);
  $trans_tbl = array_flip($trans_tbl);
  return strtr($string, $trans_tbl);
}

(2) 元ファイル中で133行目、180行目、184行目ででてくるhtml_entity_decode関数を上記のunhtmlentities関数で書き換える。その際2つ目以降の引数はばっさり切り取る。

以上でOK。正しく表示された。多分標準の関数を自前処理の関数で置き換えた、ということだろう。

コメントを残す


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net