• ベストアンサー

PHP 引数渡しの文字化けについて

PHP間での文字列引数渡しで文字化けします。 a.phpの内容(一部) print "<a href=\"http://xxxx.jp/b.php?time=" . $date . "&title=" . $title . "&data=" . $data . "\">画面遷移</a> b.phpの内容(一部) $data = $_GET["data"]; print = $data; $dataの文字数は200文字程度ですが、なぜか文字と文字の間に\が挿入される箇所が結構あります。 この\部分は引数を渡す側(a.php)には存在しないのですが、なぜかb.phpで受け取り表示すると\が挿入されています。 この\を取り除きたいのですが、どうしてもわかりません。 文字コードも同じですし、検討がつきません。 アドバイス宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

PHPには、$_GET/$_POST/$_COOKIEで取得される値の中に、「\」「'」「"」等々の文字が含まれていると、自動的にソレの前に「\」を付加するという設定があります。(理由はインジェクション対策とか。) 詳しい内容は、参考URLを確認していただくとして。 また、Shift_JISでPHPが記述されている場合、全角文字の中でも、 カタカナの「ソ」などの前に「\」が付加されます。 「5C問題」などで検索してみていただくと詳細が分かります。

参考URL:
http://nyx.pu1.net/practice/form/form3.php

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

もしかして$dataをそのまま引数として書いてます? せめてurlencode()してみませんか? "time=".urlencode($date) . "&title=" . urlencode($title) . "&data=" . urlencode($data)

関連するQ&A

専門家に質問してみよう