3日目の坊主

3日坊主といいますが、その坊主の3日目はどうなっているでしょう?更新されているのか?

SmartIRCをマルチバイト対応にする

2010年02月01日 | 日記
SmartIRCのActionHandlerはマルチバイト対応じゃないので、
日本語のキーワードには反応できない。
なので、日本語の正規表現を入れても正常に動かない。

この原因は、ActionHandlerに登録された文字列かどうかを
判別するのに、preg_matchを使ってるからである。
これを、mb_ereg_matchに入れ替えれば日本語に対応する。

VineLinuxだと、pearから落としてきたphp5のライブラリは
/usr/share/php5-pear/
に入るようになっている。
編集したいSmartIRC.phpは
/usr/share/php5-pear/Net/
にあるので、viか何かで以下の点を変更する。

(SmartIRC 1.0.1用)

2343行:
$regex = '/'.$handlerobject->message.'/';

$regex = $handlerobject->message;

2347行:
(preg_match($regex, $ircdata->message) == 1)) {

(mb_ereg_match("$regex", mb_convert_encoding($ircdata->message,"UTF-8","JIS")) == 1)) {

これで、マルチバイトの正規表現にも対応する。
今回は、一般的な日本語チャンネルを考えて編集したので、
ISO-2022-JP(JIS)になっている。
ここは、チャンネルの仕様に合わせて、
autoなりEUC-JPなりを設定すればいいと思う。
また、今回はUTF-8が標準の文字コードになっているので、
変換先はUTF-8にした。

あとは、registerActionhandlerするときは、
必ずphp.iniに設定されている標準の文字コードで保存すること。
(今回はUTF-8)

分からない場合は、
echo mb_internal_encoding();
?>
みたいなコードを適当に動かせばわかると思う。

そんなかんじ。
ジャンル:
ウェブログ
キーワード
マルチバイト 文字コード
コメント (0) |  この記事についてブログを書く
Messenger この記事をはてなブックマークに追加 mixiチェック シェア
« 【メモ】LinuxでO... | トップ | 久しぶり »

コメント

コメントはありません。

コメントを投稿


コメント利用規約に同意の上コメント投稿を行ってください。
※文字化け等の原因になりますので、顔文字の利用はお控えください。
下記数字4桁を入力し、投稿ボタンを押してください。この数字を読み取っていただくことで自動化されたプログラムによる投稿でないことを確認させていただいております。
数字4桁

トラックバック

現在、トラックバックを受け取らないよう設定されております。
※ブログ管理者のみ、編集画面で設定の変更が可能です。

あわせて読む