PHPのhtmlspecialcharsを使いつつ改行する

 

 

 

 

改行サンプル1
改行サンプル2
改行サンプル3

 

 

上の表示は、下のコードによって表示されている

 

 

改行サンプル1<br>改行サンプル2<br>改行サンプル3<br>

 

 

これが掲示板とかのコメント表示だとしたら、「クロスサイトスクリプティング対策」のために「htmlspecialchars」関数でHTML タグを使えなくしてから、echoとかで出力した方がいいんだ。

 

 

でも、下のように「htmlspecialchars」関数を使うと、改行が<br>と表示されてしまうの。 <br>だけは改行として扱ってほしいよね。

 

<?php
$kaigyou_com = '改行サンプル1<br>改行サンプル2<br>改行サンプル3<br>';
$kaigyou_com = htmlspecialchars($kaigyou_com, ENT_QUOTES, 'UTF-8'); echo $kaigyou_com
?>

 

 

【実行結果】

改行サンプル1<br>改行サンプル2<br>改行サンプル3<br>

 

 

だからね、「str_replace」関数で、一旦、<br>を「改行するよ」の文字列に置き換えてから、「htmlspecialchars」関数を通して。。。 その後に、また「str_replace」関数で、「改行するよ」を<br>に戻すんだ。

 

 

 

 

<?php
$kaigyou_com = '改行サンプル1<br>改行サンプル2<br>改行サンプル3<br>';
$kaigyou_com = str_replace('<br>','改行するよ', $kaigyou_com);
$kaigyou_com = htmlspecialchars($kaigyou_com, ENT_QUOTES, 'UTF-8');
$kaigyou_com = str_replace('改行するよ','<br>', $kaigyou_com);
echo $kaigyou_com
?>

 

【実行結果】

改行サンプル1
改行サンプル2
改行サンプル3

 

 

また、「\n」や「\r」の改行コードにも対応する場合は、nl2br関数で事前に全ての改行コードを一旦「<br>」に変えてから、さっきのことをやればいいんだ。

 

 

<?php
$kaigyou_com = '改行サンプル1<br>改行サンプル2<br>改行サンプル3<br>'; $kaigyou_com = nl2br($kaigyou_com);
$kaigyou_com = str_replace('<br>','改行するよ', $kaigyou_com);
$kaigyou_com = htmlspecialchars($kaigyou_com, ENT_QUOTES, 'UTF-8');
$kaigyou_com = str_replace('改行するよ','<br>', $kaigyou_com);
echo $kaigyou_com
?>

 

 

今日のいーちゃん、なんか頭よさそうに見えるね

 

 

 

 

 

 

 

 

 

 

 

 

 

 

お名前


削除キー(必須)

コメント(必須)


サイト内検索

twiter

CONTENTS

 

 

 

くるくるサンプルコード

 

 

 

【↓広告↓】