電子書籍の厳選無料作品が豊富!

こんにちは。

以下のようにコーディングしました。

<body>
<?
print $_POST['test'];
?>

<form action="test.php" method="post">
<textarea name="test">表示</textarea>
<input type="submit" />
</form>

</body>


そうすると「表\示」と、「\」マークが表示されてしまいます。
これはPHPの仕様なのでしょうか?

必ず「stripslashes」で処理しなければいけないのでしょうか?

よろしくお願いいたします。

A 回答 (6件)

stripslashes関数というものがあります。



ちょっと今テスト環境が無いのでわかりませんが、
print stripslashes($_POST['test']);
で出来ますでしょうか?

参考URL:http://nyx.pu1.net/function/strings/stripslashes …
    • good
    • 0

ANo.4です。



ANO.1、ANo.2の方の回答を見て自分の勘違いに気付きました。
私の回答は全く的外れですので無視してください。
お恥ずかしい限りです。。
    • good
    • 0

method.]を意味しているとわかるようです

    • good
    • 0

HTTP入力エンコーディングが正しく解釈されていないのかもしれません。


フォームに<input type="hidden" name="hoge" value="あいうえお">という要素を加えると正しく解釈してくれるかもしれません。

あとはマルチバイト関連の設定がどうなっているかも重要かもしれません。
    • good
    • 0

おそらく、お使いの環境ではmagic_quotesが有効になっているものと思われます。


汎用的なプログラムを作る場合には、get_magic_quotes_gpc()で、magic_quotesの状態を調べて、stripslashesを行うと良いでしょう。
なお、magic_quotesは将来のPHPのバージョンでは廃止される予定です。
設定を変えられるのであれば、無効にして使用したほうがお勧めです。

詳しくは、リンク先を見てください。

参考URL:http://jp2.php.net/magic_quotes
    • good
    • 0

それはシフトJISにおける5C問題という有名な現象です。


表の文字コード=955Cですから、5C=\がエスケープされて\\になっています

本質的にはSJISを使わない以外に完璧な対応策はありませんが、
場当たり的にはストリップしても対応は可能です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!