【PHP8.x】nl2br関数の使い方

nl2br関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

nl2br関数は、指定された文字列内の改行文字をHTMLの<br>タグに変換して返す関数です。この関数は、ユーザーがテキストエリアに入力した改行を含む文字列をウェブページ上で表示する際に特に役立ちます。HTMLは通常、連続する空白文字や改行文字を一つの空白として扱ってしまうため、入力された改行をそのままの形でブラウザに表示させるには、<br>タグへの変換が必要になります。

具体的な動作として、\n(ラインフィード)や\r\n(キャリッジリターンとラインフィード)といった改行コードが検出されると、それらをHTMLの<br>タグに置き換えます。これにより、テキストエリアで改行された部分が、ブラウザ上でも視覚的に改行されて表示されるようになります。

この関数は、変換したい文字列を唯一の必須引数として受け取ります。PHP 8.0.0以降、オプションの第二引数としてuse_xhtmlがありましたが、PHP 8.1.0以降ではこの引数は無視され、常にHTML5互換の<br>タグが生成されるようになりました。したがって、現在のPHP環境では、単に変換対象の文字列を引数として渡すだけで利用できます。

例えば、ユーザーが「こんにちは\n世界」と入力した場合、nl2br関数を適用すると「こんにちは<br>世界」という文字列が得られ、これがブラウザで表示されると「こんにちは」の後に改行が入り「世界」と表示されます。このように、プレーンテキストの改行をウェブページで正しく表現するための基本的なツールとして広く利用されています。

構文(syntax)

1<?php
2$original_string = "これは\n改行を含む\nテキストです。";
3$converted_string = nl2br($original_string);
4echo $converted_string;
5?>

引数(parameters)

string $string, bool $use_xhtml = false

  • string $string: 改行コード(\n)を<br>タグに置換する対象の文字列
  • bool $use_xhtml = false: XHTML互換の<br />タグを使用するかどうかを示す真偽値 (trueでXHTML互換)

戻り値(return)

string

文字列中の改行文字(\n)をHTMLの改行タグ(<br />)に変換した新しい文字列を返します。

サンプルコード

PHP nl2br関数で改行をHTMLタグに変換する

1<?php
2
3// nl2br関数の基本的な使い方を示すサンプルコードです。
4// この関数は、文字列内の改行文字 (\n, \r\nなど) をHTMLの<br>タグまたは<br />タグに変換します。
5
6// 変換元の文字列を定義します。この文字列には改行文字が含まれています。
7$originalText = "こんにちは、PHPの世界へようこそ。\n"
8              . "nl2br関数は、改行をHTMLの改行タグに変換する際に便利です。\n"
9              . "例えば、ユーザーが入力したテキストをWebページに表示する際に使われます。";
10
11// nl2br関数を使用して、文字列内の改行をHTML5互換の <br> タグに変換します。
12// 第二引数を省略するかfalseにすると、この形式になります。
13$html5ConvertedText = nl2br($originalText);
14
15// nl2br関数を使用して、文字列内の改行をXHTML互換の <br /> タグに変換します。
16// 第二引数をtrueに設定すると、この形式になります。
17$xhtmlConvertedText = nl2br($originalText, true);
18
19// 元の文字列と変換後の文字列を出力し、その違いを確認します。
20// PHP_EOLは現在のOSの改行文字を表す定数です。
21echo "--- 元の文字列 ---" . PHP_EOL;
22echo $originalText . PHP_EOL;
23echo PHP_EOL; // 空行を出力して視認性を高めます
24
25echo "--- nl2brでHTML5互換の <br> に変換後 ---" . PHP_EOL;
26echo $html5ConvertedText . PHP_EOL;
27echo PHP_EOL;
28
29echo "--- nl2brでXHTML互換の <br /> に変換後 ---" . PHP_EOL;
30echo $xhtmlConvertedText . PHP_EOL;
31
32// このスクリプトをWebブラウザで実行すると、<br>タグが実際に改行として表示されるのを確認できます。
33// コマンドラインで実行すると、<br>タグがそのまま文字列として表示されますが、
34// その文字列に<br>タグが含まれていることを確認できます。
35
36?>

PHPのnl2br関数は、文字列内に含まれる改行文字(\n\r\nなど)をHTMLの<br>タグまたは<br />タグに変換する関数です。この関数は、ユーザーがテキストエリアに入力したような改行を含むプレーンテキストを、Webページ上で視覚的な改行として表示したい場合に特に便利です。

この関数は2つの引数を取ります。最初の引数$stringには、変換したい元の文字列を指定します。2番目の引数$use_xhtmlはオプションの真偽値で、デフォルトはfalseです。falseを指定するか省略した場合、改行はHTML5標準の<br>タグに変換されます。trueを指定すると、XHTML互換の<br />タグに変換されます。関数は変換後の新しい文字列を返します。

サンプルコードでは、改行を含む$originalTextを定義し、まずnl2br($originalText)のように第二引数を省略してHTML5互換の<br>に変換しています。次に、nl2br($originalText, true)trueを指定してXHTML互換の<br />に変換する例を示しています。それぞれの変換結果はechoで出力されており、Webブラウザでこのスクリプトを実行すると、<br>タグが実際に改行として表示されることを確認できます。コマンドラインで実行した場合も、出力される文字列の中に<br>タグが含まれていることが確認できます。

nl2br関数は、文字列内の改行をHTMLの<br>タグに変換する際に利用します。Webページでテキストの改行を表現したい場合に特に便利ですが、コマンドライン出力では<br>タグは単なる文字列として表示されるため注意が必要です。第二引数をtrueにするとXHTML互換の<br />タグが生成され、Webページのドキュメントタイプに合わせて使い分けます。この関数は改行の変換のみを行い、文字列に含まれるHTML特殊文字(例: <>)は変換しません。ユーザーからの入力など、信頼できない文字列をWebページに表示する際には、XSS(クロスサイトスクリプティング)などのセキュリティリスクを避けるため、htmlspecialchars関数などで別途エスケープ処理を行うことを忘れないでください。

関連コンテンツ

【PHP8.x】nl2br関数の使い方 | いっしー@Webエンジニア