久々にphpを触りました!
POSTしたデータがなんだかエスケープされて表示される・・・。
例えば、
入力画面で
10/10/07 新着情報で<a href="/" target="_blank">このページにリンク</a>します!
と入力すると
10/10/07 新着情報で<a href=\\"/\\" target=\\"_blank\\">このページにリンク</a>します!
と\\が入ってしまう現象に小一時間悩まされました。
なんだかhtmlspecialchars_decodeが効かない
そこで、目の前の席のベテランの屯田兵的プログラマのS.A氏に助けてもらいました。
$hoge = htmlspecialchars_decode($POST['hoge']);
と、htmlspecialchars_decode を使ってデコード処理をかけても無理。
おそらく、サーバー自体で自動的にエスケープされる設定になっているんだろう。
さすがにこうなるとお手上げかなぁ。それからググりまくってもらう。
解決法1:str_replaceで¥マークを無理やり消す!
なんかもぅ、やけくそになって無理やり\を消す処理を書いてみた。
$hoge = str_replace("\\", "", $_POST['hoge']);
おっしゃ!できた!うまく動いたぞ!
S.A氏「でもこれではソースが美しくない・・・。」
解決法2:間に合わせだけどstripslashesを使う!
これもstr_replaceと同じような処理ですがまだマシ!と言うことで¥マークを削除して処理してくれるstripslashesを使用!
$hoge = stripslashes($_POST['hoge']);
おお!流石屯田兵的プログラマ!っていうより自分の勉強不足ですね(´;ω;`)頑張るぞ!
おすすめ記事
- 新しい投稿 »: TwitterクライアントTweetDriveってどうなの?
- « 古い投稿: 読まれる企業ブログのトップページ構成とは?


