久々に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']);

おお!流石屯田兵的プログラマ!っていうより自分の勉強不足ですね(´;ω;`)頑張るぞ!