[PHP-users 4315] [PATCH] multibyte patch for PHP 4.1.0

Masaki Fujimoto php-users@php.gr.jp
Sat, 15 Dec 2001 22:24:04 +0900


ふじもとです。

# cross-post で申し訳ないのですが users にも cc しています

表題の通り、PHP 4.1.0対応のマルチバイトパッチを作りました。これによりPHP
4.1.0で安全にShift_JISでスクリプトを書くことができるようになります。前回
PHP 4.0.6に対応したものを書いたときは、多分に実験的意味合いが強かったで
すが、今回はあわよくば本家にコミットできれば、と考えてちょっとだけ真面目
に作りました。動作も結構安定しているかと思います。

http://nx.dip.jp:8080/php/zend_multibyte-4.1.0.patch.gz

にあります。PHP 4でスクリプトをShift_JISで書きたい、もしくは書かなければ
ならない事情がある方は是非ご利用ください。

詳細は以下を参照して下さい。フィードバック、質問等もお待ちしています。バ
グ等を見つけられたら、是非お知らせください。


(1) コンパイル方法

/tmp/ に php-4.1.0.tar.gz と zend_multibyte-4.1.0.patch.gz があるとする
と:

% tar zxvf /tmp/php-4.1.0.tar.gz
% cd php-4.1.0
% gunzip -c /tmp/zend_multibyte-4.1.0.patch.gz | patch -p0
% ./configure [options]

として make の準備が整ったら、Zend/zend_config.h (Windows版の場合は
Zend/zend_config.w32.h)に

#define ZEND_MULTIBYTE

の1行を追加してください(場所はどこでもOKです)。configureまでいじる元気が
無かったもので...

あとは通常どおり make; make install してください。


(2) 使用方法

スクリプトのエンコーディングは encoding ディレクティブを用いて、スクリプ
トの先頭で指定します。指定できるエンコーディングは、

Shift_JIS (エイリアス:sjis, x-sjis, SHIFT-JIS)

です。他にeuc-jp等も指定できますが、その場合は特に処理は行われません(指
定するだけ無駄です)。

例:
<?php
encoding "Shift_JIS";

print "表";
$表 = "あいうえお";
print $表;
?>

制限事項は以下の通りです。

- encoding ディレクティブの引数に変数は指定できません。
- encoding ディレクティブが有効となるのは、宣言した位置以降です。従って
  スクリプトの先頭で宣言する必要があります。


--
藤本 真樹

アストラザスタジオ
fujimoto@studio.co.jp
fujimoto@php.net