PHPでメール 改行は残しつつ、でもその他のHTMLは削除したい!


メールフォームからPOSTされたデータ
<?php echo( htmlspecialchars($_POST["text"])); ?>
こうすると HTMLは削除されますが、これと一緒に改行も削除されます。
改行だけは残したい!でも他のHTMLは削除したい場合はどうすればいいですか??

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/09/03 09:43:16
  • 終了:2010/09/03 14:31:47

回答(3件)

id:cactus-tree No.1

cactus-tree回答回数8ベストアンサー獲得回数12010/09/03 09:58:27

ポイント27pt

htmlspecialcharsを使って削除するのでいいなら、ループを使えばいかがですか。

使っているOSの改行コードが\nだとして、

$line = explode("\n",$_POST['text']);

$txt = "";

foreach ($line as $k=>$v) {

$txt .= htmlspecialchars($v)."\n";

}

echo $txt;



URLはダミーです

http://q.hatena.ne.jp/

id:goodbabies

なるほど~、foreachを使えばいいのですね!参考になりました!

他にもやり方があれば参考にさせていただきたいので、引き続き回答を募集したいと思います!

2010/09/03 10:21:07
id:tasklight No.2

tasklight回答回数323ベストアンサー獲得回数402010/09/03 10:33:32

ポイント27pt

strtokで分割するサンプルです。

<?php
$outtxt = '';
$stok = strtok($_POST['text'], "\n");
while ($tok != FALSE) {
    $outtxt .= htmlspecialchars($tok) ."\n";
    $tok = strtok("\n");
}
echo $outtxt;
?>

参考:strtok

id:goodbabies

参考になります!ありがとうございます

2010/09/03 14:28:42
id:quina No.3

quina回答回数5ベストアンサー獲得回数02010/09/03 14:11:44

ポイント27pt

htmlspecialcharsは改行は削除しませんので

単純に改行をbrタグに変換してあげればいいんじゃないでしょうか

ですので


<?php echo nl2br(htmlspecialchars($_POST['text'])); ?>


ではどうでしょう

id:goodbabies

なるほど、その手もありましたね。ありがとうございます。

2010/09/03 14:29:40

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません