- ベストアンサー
変数の内容が突然変化するのはなぜでしょう?
メールからきりだしたデータで $From="あいうえお" という変数に $From=str_replace("<","[",$From);//誤動作コード置換え という処理をしたら $From="あいうえお[****@i.softbank.jp>" という風にかわってしまいます。 なぜでしょう?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
<?php $from="ああああ <test@test.test>"; print($from); ?> コレを実際に動かしてみてください。 ブラウザには「ああああ」とでると思います。 ソースを開いてみてください。 「ああああ <test@test.test>」となってると思います。 ブラウザが<test@test.test>はタグだと思って表示してないのでしょう。 回答番号:No.1さんへの回答でコードをかかれてますけど たぶんそのままで動かしてないですよね? 「$From="あいうえ"」のあとにセミコロンないですし。 切り出したデータで動かしたのではないでしょうか? で、$fromが置換された際に<が[に変わったのでタグとみなされなくなり ブラウザじょうで出力された、ということだと思います。
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
#2さんの言うとおりそうですね。 ブラウザ上でデータを確認する場合はhtmlspecialchars()しないといけません。 <?php $from="ああああ <test@test.test>"; echo "(1)".htmlspecialchars($from),"<br>\n"; $from=str_replace("<","[",$from); echo "(2)".htmlspecialchars($from),"<br>\n"; ?>
お礼
勉強になりました、ありがとうございます。
- yambejp
- ベストアンサー率51% (3827/7415)
どこかでそういう処理が入っているからでしょうね。 今見た範囲にはそのような処理はありません
お礼
回答頂きありがとうございます。 そう思って下記のようなデバックでチェックしたのですが・・ $ID="123"; $Date="1019"; $From="あいうえ" $datavalue="[id]".$ID."[date]".$Date."[from]".$From; echo "(1)".$datavalue; $datavalue=str_replace("\n","",$datavalue);//改行コード削除 $datavalue=str_replace("<","[",$datavalue);//誤動作コード置換え //$datavalue=str_replace(">",">",$datavalue);//誤動作コード置換え echo "<br>"; echo "(2)".$datavalue; 結果 (1)[id]123[date]1019[from]あいうえ (2)[id]123[date]1019[from]あいうえ[****@i.softbank.jp> となるのです。何か考えられる原因はありますか?
お礼
その通りでした、ありがとうございます。