人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPの質問です。
http://php.eweb-design.com/1301_mail.html
上記URLのスクリプトを読んでいたのですが、以下の部分で何故置換をしているのか分かりませんので教えて下さい。文字化け対策とかでしょうか?

$sendm = 0;
foreach($_POST as $key=>$var) {
if($var == "eweb_submit") $sendm = 1;
}

// 文字の置き換え
$string_from = "\";
$string_to = "ー";

(略)

foreach($_POST as $key=>$var) {
$key = strtr($key, $string_from, $string_to);
if(get_magic_quotes_gpc()) $var = stripslashes($var);
if($var == "eweb_submit") ;
else $body.="[".$key."] ".$var."\n";
}

●質問者: Lhankor_Mhy
●カテゴリ:ウェブ制作
✍キーワード:as BODY Key PHP URL
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● pahoo
●60ポイント

たしかに置換の目的が分かりませんね。

文字コードが定義されていないので、文字化け回避なのかどうかも分かりません。

それと、178行目の置換によって、183行目の INPUT NAME が矛盾を起こすような気もします。


直接、作者にお問い合わせになってはいかがでしょうか。

◎質問者からの返答

あー、すみません。文字コードはs-jisでした。


2 ● 牛乳先生(tukihatu)
●60ポイント

stripslashesが怪しいですね。

Ver. 9.20:「ー」が「\」になるバグを修正(2004/09/16)

と書いてありました。

おそらくそれ用の対応なんだと思いますが、普通はこんなの無いですよね。

なんで「ー」が「\」になるか、と考えると、stripslashesによって文字コードが変わってしまっている可能性を思いつきます。

…でも「ー」の文字コードは特におかしいコードではないんですが…バグる要素が見当たらないですね。

ためしにこの一文を外してテストしてみてはどうでしょう。

5C文字+「ー」とするとバグりやすいので、例えばソース、とか。

http://www5f.biglobe.ne.jp/~mugefan/mojibake.html#mojibake_list_...

◎質問者からの返答

な、なんつー場当たりバグフィクス……。

こんなレベルでスクリプト公開していいのか、そうなのか…。

ちなみに、このスクリプトでEUCで動かすと、0xC0**の文字がすべて0xBC**に置換されるという素敵な結果でした。「\」0xA1C0から「ー」0xA1BCにシングルバイトで置換してるからでしょうかね。大丈夫かな、このスクリプト。


3 ● valid
●60ポイント

>Ver. 9.20:「ー」が「\」になるバグを修正(2004/09/16)

これの修正じゃないですか?

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ