.NETエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnet.NETナビ
  2. .NETコラム
  3. プログラミング言語
  4. PHP
  5. PHPの改行について詳しく解説!|意外と知らない?押さえておきたい改行のポイント

PHPの改行について詳しく解説!|意外と知らない?押さえておきたい改行のポイント

  • PHP
  • プログラミング言語
公開日時:   更新日時:
PHPの改行について詳しく解説!|意外と知らない?押さえておきたい改行のポイント
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>
    システム
    エンジニア
    PHPの改行はわりと簡単なので理解しているつもりですが、なにか注意点はありませんか。
    プロジェクト
    マネージャー
    PHPはHTMLで表示することが多いので、いろいろと注意する点があります。それらについて、解説いたしましょう。

    PHPの改行とは?


    改行とは文字列を表示する処理で、次の行に移ることを意味します。どのプログラミング言語でも簡単にできますが、PHPの場合はテキストをHTMLとして表示することが多いので、他の言語とは少しやり方が変わってきます。

    PHPを使ってHTMLブラウザでテキストを出力する場合は、以下のようにHTMLの改行タグの<br>を使用すると改行できます。

    結果は以下のようになります。

    あいうえお
    かきくけこ

    HTMLの改行タグについて

    なおHTMLとHTML5では改行タグは<br>ですが、XHTMLではXMLの文法に厳密なため<br />です。ただしXHTMLは現在開発中止になっているので、あまり考慮する必要はないでしょう。なおHTMLやHTML5で<br />と記述しても改行はできます。

    他に改行できるHTMLタグは<p>があります。以下でも改行を行えます。ただしこのタグはパラグラフ(文節)を意味するタグのため、ブラウザによっては行間が1行空きます。

    他には<div&gtでもpと同様に改行ができます。ただしこちらは空行が入りません。

    サーバ内のファイル出力での改行

    PHPはHTMLの出力しかできないわけではなく、例えば同じサーバ上のテキストファイルへの書き込みもできます。その場合の改行は以下のように\nを使用します。

    \nのように先頭に\がつく文字をエスケープシーケンスと言います。これを使う場合、文字列の両端には’(シングルクォーテーション)ではなく”(ダブルクォーテーション)を使用します。’では\nで改行せずにそのまま表示されてしまいます。

    なおサーバのOSによって改行コードは以下のように変わります。PHPを使う場合のOSはUNIX/Linuxがほとんどなので、\nで改行できます。

    改行コードの意味は?

    なぜOSによってテキストの改行コードが違うのでしょうか。\rはCR、\nはLFを意味し、CRは「キャリッジリターン」、LFは「ラインフィード」の略語です。この2つの言葉は、元々タイプライターの機能の名前です。

    タイプライターとは19世紀にヨーロッパで生まれた個人向けの文書作成ができる機械で、「電気を使わないワープロ」のようなものです。

    キャリッジリターンはタイプライターの印字ヘッドが左端まで移動することを意味し、ラインフィードは紙を1行送るという意味です。Windowsの\r\nはその名残と言えます。MacやUnixは2つの\r\nの片方を省略して1つになっているということです。

    PHPのエスケープシーケンスについて

    PHPのエスケープシーケンスは\r\n以外に以下のようなものがあります。

    \t タブ
    \\ \文字
    \$ $文字
    \( 左カッコ
    \) 右カッコ
    \[ 左カッコ
    \] 右カッコ
    \' シングルクォーテーション
    \" ダブルクォーテーション
    \nnn 8 進数表記
    \xnn 16 進数表記

    例えば’や”を表示したいと思っても、文字列を囲む記号のため普通に表示することはできません。そう言った場合は以下のようにすれば表示できるのです。

    実行すると、以下のように表示されます。

    ダブルクォーテーションは”です。

    PHPではPHP_EOLを使用できる

    上で言ったようにOSによって改行コードは異なります。そこでPHPにはPHP_EOLと言う改行の定数が用意されています。以下のように使用できます。

    これでOSの違いを考慮せずに改行することができます。この方が移植性が向上するので、是非PHP_EOLを使用しましょう。

    nl2brで改行コードを変換できる

    PHPにはnl2brという、\r\nの改行コードを<br>に変換する関数があります。以下のように使うことができます。

    実行してブラウザでソースをみると、改行タグに変わっていることがわかります。

    あいうえお<br />
    かきくけこ

    なお<br />ではなく<br>にしたい場合は、nl2br($str, false);のように第2引数にfalseを指定すると<br>になります。古いバージョンのPHPでは2つ目の引数は指定できないので注意してください。

    str_replaceで改行を除去する

    ここまで改行を付加する方法を解説しましたが、これ以後は文字列の改行を除去する方法を紹介します。最初はstr_replace関数を使う方法です。以下をご覧ください。

    実行すると、

    あいうえおかきくけこ

    と出力されます。改行がなくなっていることがわかりますね。

    preg_replaceで改行を除去する

    preg_replaceという関数でも改行を除去できます。以下を実行すると改行がなくなります。

    preg_replaceは正規表現でマッチした箇所を除去します。このサンプルでは「\r\nか\rか\n」と言う意味です。正規表現は非常に多くのことができるので、興味がある人は調べてみてください。

    trimで改行を除去する

    trim関数は文字列の前後のスペースやタブを除去しますが、改行も除去できます。以下のサンプルをご覧ください。

    結果は、

    あいうえお
    かきくけこ

    となります。前後の改行は消えますが、文字列の途中の改行は残ります。

    配列を改行で分割して表示する

    文字列を改行毎に分割して配列変数に格納したい場合は、以下のようにします。

    実行すると、以下のように表示されます。なおprint_rにはこのように配列を分解して表示する機能があります。

    システム
    エンジニア
    XHTMLでの改行は
    で、サーバ上のテキストファイルの改行は を使うのですね。
    プロジェクト
    マネージャー
    その通りです。ぜひPHPの改行を使いこなせるようにしましょう。

    PHPの改行を使いこなそう

    PHPの改行について解説しましたが、いかがでしたでしょうか。ブラウザにHTMLを表示する時の改行と、サーバのテキストファイルに出力する時の改行の2通りありますが、ここでの知識を踏まえておけばもう困ることはないでしょう。

    またこの記事で解説したエスケープシーケンスや正規表現についても学んでおけば、テキスト処理のスキルが上がって役立つことでしょう。是非学んでおいてください。

    FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    新着案件New Job