文字列リテラル
プログラムに文字列を記述する際に、『ここから、ここまでは、文字列ですよ』といったことを示す必要があります。この場合は、文字列をシングルクオテーションとダブルクオテーションで囲います。これは文字列リテラルと呼ばれます。
シングルクオテーションとダブルクオテーション
以下の例で、出力する文字列をシングルクオテーションとダブルクオテーションを囲っています。
<?php //シングルクオテーションで囲っています。 echo 'こんにちは!<br />'; //ダブルクオテーションで囲っています。 echo "こんばんは!<br />"; ?> ◆実行結果 こんにちは! こんばんは!
シングルクオテーションとダブルクオテーションともに文字列を囲うために使用しますが、少し動作が異なります。ダブルクオテーションで囲われた変数は展開され、シングルクオテーションで囲った変数は単なる文字列として認識されます。
<?php //シングルクオテーションで囲っています。 echo 'こんにちは!<br />'; //ダブルクオテーションで囲っています。 echo "こんばんは!<br />"; ?> ◆実行結果 $aisatu1 こんばんは!
上記のように、ダブルクオテーションで囲われた変数は展開され、変数として扱われていることがわかります。また、シングルクオテーションとダブルクオテーションで囲った文字列は改行して記述することが可能です。この場合、文字列の出力結果にも改行コードが含まれています。
<?php //シングルクオテーションで囲っています。 echo 'こ ん に ち は! <br />'; //ダブルクオテーションで囲っています。 echo "こ ん ば ん は! <br />"; ?> ◆実行結果 こ ん に ち は! こ ん ば ん は!
ヒアドキュメント
複数の文字列を記述する場合にヒアドキュメントという方法があります。ヒアドキュメント内では、ダブルクオテーション動揺に変数は展開されます。ヒアドキュメントの処理として、「<<< 任意の文字列」から「任意の文字列」で囲われた間は文字列として扱われます。以下の例ではヒアドキュメントで囲った文字列を関数 echo() の引数として渡しています。
<?php echo <<< Document おはようございます。<br /> 今日はいいお天気ですね。 Document ?> ◆実行結果 おはようございます。 今日はいいお天気ですね。
なお、上記の Document は任意の文字列です。任意ですのでユーザがわかりやすいよう変更できます。また、ヒアドキュメントの大きな特徴として変数が展開されることです。確認してみましょう。
<?php $aisatsu = "おはようございます。"; echo <<< Document 変数を出力してみましょう。<br /> $aisatsu Document ?> ◆実行結果 変数を出力してみましょう。 おはようございます。
ヒアドキュメント内の変数は、展開されたことがわかります。
文字列の連結
文字列の連結には、ドット . を使用します。文字列を連結して出力する例を見てみましょう。
<?php echo "おはよう" . "ございます。"; ?> ◆実行結果 おはようございます。
また、変数と文字列との連結にも、ドット . を使用できます。
<?php $str = 'また' echo $str . '会えましたね。'; ?> ◆実行結果 また会えましたね。
シングルクオテーションで囲った文字列を変数と連結するのに便利ですね。
文字列の出力
文字列を出力するには、PHPの標準関数の echo() と print() を使用します。
関数 echo() を使う
文字列を出力するには、echo()に引数として文字列を渡し、実行します。
<?php echo 'こんにちは。'; ?> ◆実行結果 こんにちは。
文字列を結合している場合は、以下となります。
<?php $str = 'また' echo $str . '会いたいです。'; ?> ◆実行結果 また会いたいです。
引数を括弧で括ることもできます。関数 echo() の処理自体は同じですので書きやすい方を選択して頂いて構いません。
<?php echo ('こんにちは。'); ?> ◆実行結果 こんにちは。
関数 echo() の引数をカンマ区切りにすることで順次出力しますので、文字列を結合するのと同じ処理をできます。
<?php echo ('また', '会いたいです。'); ?> ◆実行結果 また会いたいです。
関数 print() を使う
関数 print() の引数に文字列を渡すことで文字列を出力できます。関数 echo() と同様に括弧で括っても括らなくてもどちらでも処理できます。
<?php print 'こんにちは。'; print ('こんばんは。'); ?> ◆実行結果 こんにちは。 こんばんは。
関数 echo() と print() は、文字列を出力する処理は同じですので使いやすい方を選択して頂いて構いません。
エスケープシーケンス
あらかじめ予約されていて文字列として使用できない文字があります。例をあげるとシングルクオテーションや改行です。こういった使用できない文字を使用したい場合に \ を付与し、文字として使用可能としたものがエスケープシーケンスです。エスケープシーケンスの一覧を以下に記載します。
記載方法 | 意味 |
---|---|
¥' | シングルクオーテーション |
¥" | ダブルクオーテーション |
¥n | 改行 |
¥r | キャリッジリターン |
¥t | タブ |
¥¥ | ¥文字 |
¥$ | $文字 |
¥( | 左括弧 |
¥) | 右括弧 |
¥[ | 左括弧 |
¥] | 右括弧 |
¥nnn | 8 進数表記 |
¥xnn | 16 進数表記 |
それでは、エスケープシーケンスの使用例を見てみましょう。シングルクオテーションの場合を例に記載します。
<?php echo '私は、\'日本人\'です。'; ?> ◆実行結果 私は、'日本人'です。
このようにシングルクオテーションのように意味のある文字を、単なる文字列として使用できます。エスケープシーケンスは、\ + 文字列 の形で使用します。ダブルクオテーションを文字として使用したい場合は、以下のように記述します。
<?php echo "私は、\"日本人\"です。"; ?> ◆実行結果 私は、"日本人"です。
エスケープシーケンスを使用しないとダブルクオテーションの中にダブルクオテーションが存在してしまうとどこからどこまでが文字列なのかわからなくなってしまいます。ですのでエスケープシーケンスが必要になります。