PHP スクリプト内で改行コードが入った文字列を HTML の出力としてブラウザで表示しても改行コードは無視され1行で表示されてしまいます。そのため、ブラウザで改行として扱うためには BR タグに変換(または、挿入)して PHP では出力する必要があります。
スポンサーリンク
また、PHP では改行コードを BR タグに変換する nl2br 関数は存在するのですが、BR タグを改行コードに変換する関数は存在しませんので、自前で処理する必要があります。
改行コードの直前に BR タグを挿入する
$str = "line1\nline2\nline3"; // 改行の前にタグを追加する(XHTML 準拠) // 第2パラメータは PHP 5.3.0 より追加された。 var_dump(nl2br($str, true)); // 出力 //------------------------------------------- // string 'line1 // line2 // line3' (length=29) // 改行の前にタグを追加する var_dump(nl2br($str, false)); // 出力 //------------------------------------------- // string 'line1 // line2 // line3' (length=25)
BR タグを改行コードに変換する
/*
* BR タグを改行コードに変換する
*/
function br2nl($string)
{
// 大文字・小文字を区別しない
return preg_replace('/<br[[:space:]]*\/?[[:space:]]*>/i', "\n", $string);
}
$str = "abc<br>def<br />ghi<BR / >jkl";
var_dump(br2nl($str));
// 出力
//-------------------------------------------
// string 'abc
// def
// ghi
// jkl'
HTML では、br タグは ‘<br’ で始まる必要があります。 間にスペースが入った場合は、br タグとはブラウザで認識されなません。例え br タグと解釈されたとしてもその記述は間違いです。
なお、正規表現に関しては、『 PHP 正規表現 ( preg_match / preg_match_all) 』にまとめてありますので、よろしければご確認ください。