[PHP-users 1565] Re: addslashes関数でエンコード

Akihiro Sagawa php-users@php.gr.jp
Mon, 27 Aug 2001 23:07:47 +0900


こんにちは。佐川です。

以下の引用部分は'office'さんの
"[PHP-users 1561] addslashes関数でエンコード"からのものです。
 >たけです。ご無沙汰しています。
こんにちは。

 >私の今までの認識では、addslashesは
 >$amei="B'z";
 >$en_amei=addslashes($amei);
 >つまり
 >$en_amei="B\'z";
 >のようにSQL文で'
 >$query="INSERT INTO  melo_table (amei,mmei) VALUES('B'z','$en_mmei')";
 >のようにならないようにする為の関数だと思っていたのですが、
 >
 >どのような場合に「本能\」のように、エンコード後の最後に\がついてしまうのでしょうか?
Shift_JISの2バイト目にエスケープの対象となる文字が現われたときです。
PHPの文字列関数(≠jstring)は、ほとんどの場合ISO-8859-1互換の文字列を
仮定している為にこのような問題が起こりえます。

 >このような場合を考慮する為にはどのように対処したらよいのでしょうか?
(1) Shift_JISでソースを書かない
(2) 一時的にEUC-jpやUTF-8などのコードに変換する
(3) 自作のaddslashesを作成する
(3') addslashesしたあとに自作関数で取り除く

のいずれかを試してみては?

[PHP-jp 8792] Re: PostgreSQL用のSQLを作成するときには更に
http://ns1.php.gr.jp/php-jp/archives/msg08777.html
あたりも参考にしてください。

では。

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