【メモ】 DOMDocument::loadHTMLで文字化けする場合

HTML文書を読み込んでパースするときに、今までは正規表現でやっていたんですが、 処理がどうしても面倒な感じになるし改変にも弱いので、DOMでやることにしてみたらば見事に嵌るなど。 読み込む文書がXMLだと問題ないんですが、HTML、特にShift-JISで書かれた文書だとなぜか文字化け。 色々と検索した結果、多分これで行けると言うのにたどり着いたのでメモ。

参考

DOM拡張モジュールでHTMLをパースする【PHP】 – Programming Magic

文字化けさせないためのポイント

  1. 読み込む文書をUTF-8に変換しておく
  2. あらかじめ日本語文字列を数値文字参照に変換しておく

1. 読み込む文書をUTF-8に変換しておく

PHPのデフォルト文字コードに合わせる、と言う意味です。

2. あらかじめ日本語文字列を数値文字参照に変換しておく

よく解らなかったんですがこれが文字化けの直接できな原因のようです。 参考エントリでは「metaタグで文字エンコードが指定されていない」場合に起きると書かれていますが、 文字エンコードに「Shift_JIS」が指定されていても発生しました。 というわけで、あらかじめ日本語文字列を数値文字参照に変換しておきます。
$html = mb_convert_encoding($html, 'HTML-ENTITIES', 'ASCII, JIS, UTF-8, EUC-JP, SJIS');
これだと、表示上文字化けは起きません。 それどころか、コメント以外の部分は普通に日本語で書き出されているようです。 ので、このままでもいいかなーという感じ。 まぁとはいえ、あんまりDOMについて解っていないので、だいぶ泥縄であれこれやってるんですけどね… サーバの全面引っ越し(およびドメインの変更)はいつになることやら。

続きを読む

Becky! Ver.2.57 リリース

Becky! Ver.2.57がリリースされました。 更新はなんと8ヶ月ぶり。 (Ver.2.56の最後の修正からは4ヶ月ぶり) Becky! Ver.2.56 – Becky! Ver.2.57 主な変更点は以下の通り。

Ver.2.56 -> Ver.2.57 (2010/09/29)
  • クエリー検索のオプションに「含まない」を追加した。
  • 草稿箱以外から、送信箱へのメールのドラッグ&ドロップを禁止するオプションを追加。デフォルトでONになっていますので、従来の動作を希望の場合は、全般的設定」「一覧表示」「送信箱へのドロップを禁止」オプションをOFFにして下さい。
  • 「グリーンタスクの数もフォルダ横に表示」オプションを追加(「全般的な設定」「一覧表示」)期限が迫っていないタスクの数についてもフォルダ横に表示するようにした。
  • UTF-8のメールに返信する際、メールボックスの設定やフォルダのプロパティで常時付加のCcやBccに設定されている日本語が文字化けする問題を修正。
  • デュアルモニタ以上のサブ画面で、メールアドレスを右クリックして「アドレスをコピー」が動作しないバグを修正。
  • カッコやカンマを含んだ状態で名前部分エンコードされたメールアドレスを扱うとき、正しくパースされない問題を修正。
  • タスク設定画面で、「新規タスク」で追加する際に、ステータスを「アクティブ」とするようにした。
  • レジストリの HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\Becky! Ver.2 キー以下にVersionStringとしてバージョン番号を登録するようにした。
  • フィルタリングマネージャで、文字列に256文字以上の文字を設定するとフリーズすることがあるバグを修正。

続きを読む

MySQLのINSERT文(方法ごとの処理時間比較)

大量のデータをINSERTする場面があってなんとか高速化できないかと思って、 以下の手法を比較してみた。

  1. 1件ずつINSERTする
  2. トランザクションを使用する
  3. 1クエリでまとめてINSERTする
テスト環境は以下の通り。
  • MySQL 5.1
  • テーブルはInnoDB、AUTO_INCREMENT付き(innodb_autoinc_lock_mode=1)
  • PHP 5.3.6
1000件、3000件、5000件、10000件と件数を増やしながらそれぞれ5回ずつ試行して平均を取っている。 使用したコードは最後に。

続きを読む

チャンピオンズリーグ決勝「マンチェスター・U × バルセロナ」を見た

その視聴のためだけに、午前3時過ぎて出掛けるというアレでしたが、 そうするだけの勝ちがある一戦でした。 というわけで感想。 以下、友達に送ったメールからの転載

いやー楽しかったよ。バルサは好きなんだけど、あそこまで完璧だともうなんか腹立つわ(笑)いや、腹立てる理由なんかないんだけど。 バルサに対しては、今までの『厳しい守備』が全くきかないんだなってのが、改めてわかったよ。スペース消して、コース抑えて、ストップしてるはずなのに、動きにわずかにつられて出来たスペースから決定機になっちゃうもんな。なんか、柔道みたいだ。モウリーニョも苦労するはずだわ。 美しいサッカーは本当に凄いけど、やっぱりあんなに差があるとさすがにちょっと(笑) 来期の、他チームの取り組みに期待だなーいやほんと。
僕は「柔道」とたとえたけど、友達からは「合気道みたいでもある」とも返ってきて、そうなんだよなー 本とか漫画とかに書いてある「柔道の極意」って、力ではなくてスピードとタイミング、 重心をずらせば人間は簡単に投げ飛ばせる→柔よく剛を制すみたいな感じ。 48kg以下級の猪熊柔が大男を一本背負いで投げ飛ばすっていうか。

続きを読む

梅雨入り、梅雨明け

雨の日。 「いつになったら梅雨は明けるんだ」 の、苛立ち防止のために毎年梅雨に関する情報を載せているのですが、 今年は例年よりもかなり早い梅雨入りで、関西はもうとっくに梅雨入りしてしまっています。なんだそれ。 これで早い分、早く空けてくれるなら良いんですが… そういうわけで、梅雨入り、梅雨明けの時期に関する情報を。

続きを読む

【小ネタ】 パスワードを保存できないサイトでパスワードを保存する 【Firefox】

ある程度どうでも良いサイトの場合、パスワードを保存するリスクより利便性の方が上回るので、 結構積極的に保存してたりするんですが、サイトによっては保存できない設定になっている場合があります。 例えば…アフリエイトのMicroAd。 BTパートナー|行動ターゲティング,ブログ広告,リターゲティングのマイクロアド 左上にログインフォームがありますが、ここで入力したパスワードは保存されません。 (保存しますか?と聞かれない)

続きを読む

Instgramの「いいね!」機構が使いやすくなってた

Instgramのバージョンが1.8に上がって、「いいね!」する機能がアップデートされてました。 写真の上でダブルタップ(2回連続でタップする)と次のようなハートマークが出て、 「いいね!」することが出来ます。 おおー 「いいね!」ボタンが地味に小さかったので、 これはちょっと便利になった。 (但し、もう一度ダブルタップでいいね!取り消し…は出来ない) 他のアプリケーションでも取り入れて欲しいなー Tweet ATOKでツイートをダブルタップ→お気に入りに追加とか、 超便利だと思うんだけどな。 スマートフォンはPCに比べてインターフェイスのデザインに幅があって楽しそうね。

続きを読む

そんなことより本家「Perl」の商標、拒絶査定が確定してるぞ(不服審判中?)

「東方プロジェクト」の商標登録申請でまとめてて思い出したので調べたらこんなことになってた。 ↓ 前回あった「拒絶理由通知書」が審査結果だったのに対し、 「拒絶査定」は最終判断。 つまり、Perlの国際商標は日本では認められなくなりました。 おいwww まぁ別に登録できなかったからと言って何かあるわけじゃないんだがしかし。 どうすんだこれ。

関連

Perlの商標の件について業界の友人に聞いてみた – nplll

追記

よく見たら、
査定種別(拒絶査定) 審判
となってて、「審判情報」が設定されてるから、現在、不服審判中かも知れないですね。 審査の結果が出ると、「審判情報」フレームに結果が残るみたい(現在は公開情報無し)。
  • 2011年1月25日付 拒絶査定
    • 拒絶査定の謄本の送達日から3ヶ月が経過するまでなら、拒絶査定不服審判を請求することができる
  • 2011年4月25日付 拒絶査定不服審判が請求
…粘るなぁ。

参考

特許電子図書館の活用術-経過情報を確認しよう!

続きを読む

【小ネタ】 ニコニコ動画のユーザーアイコンのURL

特に実用性がないような気がしますが一応。

ユーザーアイコンのURL形式

例えばユーザーIDが123456の場合、ユーザーアイコンはこんなURLになります。
  • http://usericon.nimg.jp/usericon/12/123456.jpg

「12」の部分

ユーザーIDの下4桁を削除した数字です。 4桁以下の場合には「0」が入ります。
  • 9987 → 0
  • 123456 → 12
  • 45678910 → 4567

「123456」の部分

ユーザーIDです。

ユーザーアイコンが存在しない場合

ユーザーアイコンのURLにアクセスすると404が返ります。 その上で表示はプロフィール画面ではブランク用の画像に(以下は例)。
  • http://uni.res.nimg.jp/img/user/thumb/blank.jpg

注意

動画情報に合わせて表示したりという用途が考えられますが、 静的ファイルの分散方法については状況次第で変更もありうるので、参考程度に。 ユーザー情報を取得できるAPIがあれば気にしなくていいんですけどねー 今のところないみたいなので。 (ユーザーID自体はニコニコ動画の動画情報API内に含まれます) ブログパーツならあるけど。

続きを読む