PHPで文字列を扱うための4つの方法

2014年8月29日(金)
野田 貴子

2. ダブルクォート(")で囲う

次はダブルクォートを使う方法です。シングルクォートよりも、いろいろなことができます。2つのダブルクォートで囲まれた部分が文字列になります。

    echo <span style="color:red;">"</span>誕生日おめでとう!<span style="color:red;">"</span>

<実行結果>

    誕生日おめでとう!

ダブルクォートの中では、シングルクォートをそのまま使うことができます。

    echo "Merry X<span style="color:red;">'</span>mas!";

<実行結果>

    Merry X<span style="color:red;">'</span>mas!

ダブルクォートの中でダブルクォートを使うには、エスケープ文字が必要です。

    echo "<a href=<span style="color:red;">\"</span>#<span style="color:red;">\"</span>>リンク</a>";

<実行結果>

    <a href=<span style="color:red;">"</span>#<span style="color:red;">"</span>>リンク</a>

代わりに、シングルクォートの中ではダブルクォートをそのまま使えます。

    echo '<a href=<span style="color:red;">"</span>#<span style="color:red;">"</span>>リンク</a>';

<実行結果>

    <a href=<span style="color:red;">"</span>#<span style="color:red;">"</span>>リンク</a>

バックスラッシュの書き方はシングルクォートと同じです。

    echo "<span style="color:red;">\\</span>(^_^)/";

<実行結果>

    <span style="color:red;">\</span>(^_^)/

ダブルクォートの中では他にもいくつかの特殊文字を使えます。もっともよく使うのは、改行記号「\n」です。

    echo "<h1>徒然日記</h1><span style="color:red;">\n</span><p>日々のことをいろいろ書いています。</p><span style="color:red;">\n</span>";

<実行結果>

    <h1>徒然日記</h1><span style="background:#fdc;">↵</span>
    <p>日々のことをいろいろ書いています。</p><span style="background:#fdc;">↵</span>

シングルクォートの場合は改行記号を使えないので、そのまま「\n」と出力されます。

    echo '<h1>徒然日記</h1><span style="color:red;">\n</span><p>日々のことをいろいろ書いています。</p><span style="color:red;">\n</span>';

<実行結果>

    <h1>徒然日記</h1><span style="color:red;">\n</span><p>日々のことをいろいろ書いています。</p><span style="color:red;">\n</span>

タブ記号は「\t」です。

    echo "1<span style="color:red;">\t</span>2<span style="color:red;">\t</span>インデント";

<実行結果>

    1<span style="background:#cdf;">	</span>2<span style="background:#cdf;">	</span>インデント

ダブルクォートの中では、ドル記号($)にもエスケープ文字を付けます。

    echo "そのスマートフォンの値段は、<span style="color:red;">\$</span>100です。";

<実行結果>

    そのスマートフォンの値段は、<span style="color:red;">$</span>100です。

シングルクォートの場合、ドル記号はそのままドル記号として扱いますが、ダブルクォートの場合は、ドル記号($)を変数の始まりだと解釈するので、エスケープ文字が必要なのです。変数とは、中に値を入れておく入れ物です。PHPの変数は、ドル記号から始まる英数字という決まりがあります。

    // 変数 $hello に「こんにちは」と入れておきます。
    $hello = 'こんにちは';

    echo <span style="color:red;">'</span>みなさん、<span style="color:red;">$hello</span>!<span style="color:red;">'</span>;
    echo <span style="color:red;">"</span>みなさん、<span style="color:red;">$hello</span>!<span style="color:red;">"</span>;

<実行結果>

    みなさん、<span style="color:red;">$hello</span>!
    みなさん、<span style="color:red;">こんにちは</span>!

ダブルクォートの方は、変数の名前「$hello」ではなく、変数の中身「こんにちは」が出力されました。変数名の後ろがアルファベットなどで、どこまでが変数なのか区切りがつけられない場合は、波カッコを使います。

    $length = 155;
    echo "身長は<span style="color:red;">{$length}</span>cmです。";

<実行結果>

    身長は155cmです。

シングルクォートでも変数の中身を出力したい場合は、シングルクォートの外に変数を書きます。

    echo 'みなさん、';
    echo $hello;
    echo '!';

何度も echo を書くのは面倒なので、結合演算子(.)を使って文をつなげることもできます。

    echo 'みなさん、' <span style="color:red;">.</span> $hello <span style="color:red;">.</span> '!';

3. ヒアドキュメントを使う

何行にも渡る文字列を出力したり、保存したりしたい場合に、ヒアドキュメントを使うことがあります。ヒアドキュメントでは文字列を好きなIDで囲います。

ヒアドキュメントのIDには英数字とアンダースコアが使えますが、最初の一文字に数字は使えません。ヒアドキュメントを開始するIDは

    $hello = 'こんにちは';
    echo <span style="color:red;"><<<SAMPLE</span>
    ヒアドキュメントではシングルクォート(<span style="color:red;">'</span>)もダブルクォート(<span style="color:red;">"</span>)もそのまま書けます。
    その他の挙動はダブルクォートの場合と同じです。
    行が変わると改行されます。
    改行記号の「<span style="color:red;">\\n</span>」を書いても改行されます。ここに→<span style="color:red;">\n</span>←改行記号があります。
    "<span style="color:red;">\$hello</span>" と書くと、変数の中身が "<span style="color:red;">$hello</span>" と表示されます。
    <span style="color:red;">SAMPLE</span>;

<実行結果>

    ヒアドキュメントではシングルクォート(<span style="color:red;">'</span>)もダブルクォート(<span style="color:red;">"</span>)もそのまま書けます。
    その他の挙動はダブルクォートの場合と同じです。
    行が変わると改行されます。
    改行記号の「<span style="color:red;">\n</span>」を書いても改行されます。ここに→
    ←改行記号があります。
    "<span style="color:red;">$hello</span>" と書くと、変数の中身が "<span style="color:red;">こんにちは</span>" と表示されます。

あまり使う機会はないと思いますが、連結演算子(.)でヒアドキュメント同士を連結したりもできます。

    echo <span style="color:red;"><<<SAMPLE</span>
    (*^0^)/
    <span style="color:red;">SAMPLE</span>
    <span style="color:red;">. <<<SAMPLE</span>
    \(^0^*)
    <span style="color:red;">SAMPLE</span>;

<実行結果>

    (*^0^)/\(^0^*)

4. Nowdocを使う(PHP5.3.0以降)

ヒアドキュメントの文字列はダブルクォートで囲った文字列と同じ挙動ですが、Nowdocの文字列はシングルクォートと同じです。ヒアドキュメントと同じようにIDを使いますが、Nowdocを開始するIDをシングルクォートで囲います。

    echo <span style="color:red;"><<<'SAMPLE'</span>
    Nowdocではシングルクォート(<span style="color:red;">'</span>)もダブルクォート(<span style="color:red;">"</span>)もそのまま書けます。
    その他の挙動はシングルクォートの場合と同じです。
    行が変わると改行されます。
    改行記号の「<span style="color:red;">\\n</span>」を書いても改行されません。ここに→<span style="color:red;">\n</span>←改行記号があります。
    "<span style="color:red;">$hello</span>" と書いても変数の中身は表示されず、そのまま "<span style="color:red;">$hello</span>" となります。
    <span style="color:red;">SAMPLE</span>;

<実行結果>

    Nowdocではシングルクォート(<span style="color:red;">'</span>)もダブルクォート(<span style="color:red;">"</span>)もそのまま書けます。
    その他の挙動はシングルクォートの場合と同じです。
    行が変わると改行されます。
    改行記号の「<span style="color:red;">\n</span>」を書いても改行されません。ここに→<span style="color:red;">\n</span>←改行記号があります。
    "<span style="color:red;">$hello</span>" と書いても変数の中身は表示されず、そのまま "<span style="color:red;">$hello</span>" となります。

1983年生まれ。大学卒業後、ソフトウェア開発の営業を経て、ソフトウェア開発業務に転向。現在は自社パッケージのフロントエンド開発のほか、PHPでの受託開発案件、日→英のローカライズ案件などを担当。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています