- PR -

PHP4についての質問。

1
投稿者投稿内容
HIROKI
会議室デビュー日: 2001/08/09
投稿数: 6
投稿日時: 2001-08-09 21:00
初めまして。水沼といいます。

PHP4についてご教授お願いしたいのですが、内容は下記の通りです。

■ 一部の文字の後に必ず`\'がつく

内部エンコードをShift_JISにしたとき、一部の文字の後に必ず`\'がついたり、
それ以外の場合でも`"'などの文字が`\"'のようにクォートされる。

PHPの設定であるmagic_quotes_gpcがデフォルトで有効(On)になっているのが
原因です。php3.ini(もしくは、.htaccess)の設定を無効(Off)にするか、スク
リプト側で、StripSlashes関数を使うことによって取り除くことが出来ます。

また、日本語文字列だけ取り除くには、$quote_strが、Shift_JISで表現されて
いるならば ereg_replace関数を用いて、

ereg_replace(sprintf("([%c-%c%c-%c]\\\\)\\\\",0x81,0x9f,0xe0,0xfc),"\\1",$quote_str);

とすれば、可能です。

Shift_JISでの「一部の文字」の例(部分):
―⊇そソЫ綾噂化浬棺欺興圭現構砂蚕悉十晶申製曾遜箪捗貼峠能判表塀暴冥予僚禄

の現象が起きましてPHP4の内部エンコードを修正したいのですがどこを修正すればよろしいのでしょうか?

皆様よろしくお願いします。
ZZZ
会議室デビュー日: 2001/08/10
投稿数: 17
投稿日時: 2001-08-10 05:22
ZZZです。
私も今phpにはまっています。
私はFreeBSD+PHP+Postgresの環境でやっています。PHP3とPHP4両方を使っていますが、お話のような問題が出てきませんでした。どのような環境をお使いになっているのでしょうか。PHPなら、FreeBSD/Linux/Windowsなど全部走れるので、詳しい環境、できればconfig.statuも教えてください。文字化けしてますだけじゃどうしようもないのです。
よろしくお願いします。
ZZZ
ひぐち おさむ
大ベテラン
会議室デビュー日: 2001/07/26
投稿数: 108
お住まい・勤務地: 東京都在住
投稿日時: 2001-08-10 12:55
にわか PHP 使いのひぐちと申します。
引用:

HIROKIさんの書き込み (2001-08-09 21:00) より:
の現象が起きましてPHP4の内部エンコードを修正したいのですがどこを修正すればよろしいのでしょうか?


ええっと「PHP4で、シフトJISの文字が Magic Quote されてしまうので、内部文字エンコードを EUC にしたいのだが、どうすればいいのか?」というご質問ですかね?(意味を取り違えていたら、ごめんなさい。)

内部文字エンコードを変えれば治るのかどうかは、書かれている内容からは分かりませんが、エンコードを変えるのは

  • php.ini で mbstring.internal_encoding を指定する (マニュアル)
  • mb_internal_encoding() 関数で指定する

だと思います。 (PHPのバージョンは 4.0.6 ですよね?)
あるいは、引用されている文に書かれている通り、入ってしまったクォートを正規表現使って取り除くとか……

ZZZ さんも書かれている通り、なにをどうしたらどう化けたのかを具体的にお書きにならないと、解決の糸口がつかみにくいです。
また、特に日本語文字列の扱いは、お使いのPHPのバージョンとか、configure の時の設定 (config.status とか phpinfo() でわかります) で動作が違いますので、そういう情報もあったほうがいいですね。
_________________
ひぐち おさむ
[Disclaimer] この書き込みは私個人の見解を記述したものです。私が所属・関与する法人・団体の意見を代表・代弁するものではありません。
HIROKI
会議室デビュー日: 2001/08/09
投稿数: 6
投稿日時: 2001-08-21 16:49
自己レス。
ファイルなどのエンコードをEUCにして直せました。

みなさんご協力ありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)