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) 』にまとめてありますので、よろしければご確認ください。