[PHP-users 113] Re: SJISでの全角文字について

Akihiro Sagawa php-users@php.gr.jp
Tue, 19 Jun 2001 13:52:58 +0900


こんにちは。佐川です。
# php-usersでは、はじめて、かな。
FYIに補足させていただきます。

以下の引用部分は'Y.Watanabe'さんの
"[PHP-users 109] Re: SJISでの全角文字について"からのものです。
 >渡辺です。
こんにちは。

これは、PHP3-i18n時代のREADME.i18nの記述だと思います。
# 今でも確かphp4.0.6のmb_stringの中にあるはずです。
 >■ 一部の文字の後に必ず`\'がつく
 >
 >内部エンコードをShift_JISにしたとき、一部の文字の後に必ず`\'がついたり、
 >それ以外の場合でも`"'などの文字が`\"'のようにクォートされる。
 >
 >PHPの設定であるmagic_quotes_gpcがデフォルトで有効(On)になっているのが
 >原因です。php3.ini(もしくは、.htaccess)の設定を無効(Off)にするか、スク
 >リプト側で、StripSlashes関数を使うことによって取り除くことが出来ます。
この方法(FAQ)はそのままPHP4でも当てはまります。
# php3.iniではなくphp.iniに書きますが。

しかし、以下の方法は (PHP3でもPHP4でも)
正しく適用することができません。

詳しくは、
石垣さんの書かれた[PHP 8790]などのスレッド
http://sidecar.ics.es.osaka-u.ac.jp/php-jp/archives/msg08771.html
を参照してください。

 >また、日本語文字列だけ取り除くには、$quote_strが、Shift_JISで表現されて
 >いるならば ereg_replace関数を用いて、
 >
 >ereg_replace(sprintf("([%c-%c%c-%c]\\\\)\\\\",0x81,0x9f,0xe0,0xfc),
 >	"\\1",$quote_str);
 >
 >とすれば、可能です。

自らの誤りを指摘したくはないのですが、
素直にこの方法を実装してしまうと問題になるため、
ポインタとして示させていただきました。

ご参考のご参考までに。

# jstringとmb_stringのドキュメントで
# 補足訂正していただけないでしょうか >塚田さん

では。

☆・・・・‥‥‥‥‥‥…‥‥‥‥‥‥・・・・
  佐川  昭宏       mailto:sagawa@sohgoh.net
                  http://pelican.sohgoh.net/
  ・・・・‥‥‥‥‥‥…‥‥‥‥‥‥・・・・☆