「PHPの基礎 - 文字列」の版間の差分

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動
122行目: 122行目:
  print '出身地は¥'大阪¥'です';
  print '出身地は¥'大阪¥'です';
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
== 変数展開 ==
文字列をダブルクオーテーションで囲む場合やヒアドキュメントの場合、文字列に変数が存在する時、変数は格納されている値に置換される。<br>
このような処理を変数展開と呼ぶ。<br>
<br>
以下の例では、文字列に変数nameが記述されている。<br>
この文字列を出力する時、"こんにちは。高橋 さん"と変数に格納されている値に置き換えて出力される。<br>
<syntaxhighlight lang="php">
$name = '高橋';
echo "こんにちは。$name さん";
</syntaxhighlight>
<br>
変数展開において、変数が記述された位置の後ろにアルファベットが続く場合は、どこまでが変数名なのか区別できない場合がある。<br>
以下の例では、変数colornamecolorを変数展開されてしまう。<br>
<syntaxhighlight lang="php">
$colorname = 'red';
echo "frame is $colornamecolor";
</syntaxhighlight>
<br>
このように、どこまでが変数名なのか区別できない場合や配列変数等を使用する場合は、変数名を<code>{}</code>で囲んで記述する。<br>
<syntaxhighlight lang="php">
$colorname = 'red';
echo "frame is ${colorname}color";
</syntaxhighlight>
<br>
<u>※注意</u><br>
<u>シングルクオーテーションで囲んだ文字列で変数を記述しても、変数展開は行われない。</u><br>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:Web]]
[[カテゴリ:Web]]

2021年2月25日 (木) 09:39時点における版

概要

PHPでは複数のデータ型が存在するが、文字の集合を表すために使用されるデータ型が文字列である。
ここでは、文字列の取り扱いを記載する。


文字列リテラル

文字列を記述する場合、文字の集合をシングルクオーテーション'またはダブルクオーテーション"で囲む。
なお、で囲む場合と""で囲む場合では、データの扱いが異なる。(詳細は、次のセクションに記載する)

'文字列'
"文字列"


複数行に渡る文字列を作成するには、ヒアドキュメントを使用することもできる。
ヒアドキュメントは、<<< <ID名>で始まり<ID名>で終わる間に記述する。ID名は、任意の文字列が指定できる。
また、ヒアドキュメントでは、シングルクオーテーション'、ダブルクオーテーション"、空白も文字として扱われる。

<<< ID
文字列1
文字列2
文字列3
ID


以下の例では、ID名をDocumentとしている。

 <<< Document
 こんにちは。<br />
 お元気ですか?
 Document



文字列の連結

文字列と他の文字列を連結して新しい文字列を作成するには、.を使用する。

'文字列1'.'文字列2'


以下の例では、2つの文字列を連結して出力している。

 print 'こんにちは。'.'お元気ですか?';
 
 $name = '佐藤';
 print $name.'さん。こんにちは。';


また、連結した文字列を変数に格納することもできる。

 $name = '佐藤'.'さん';



文字列の出力(echo, print)

文字列を出力するには、echoprintが存在する。

echoの書式は、以下の通りである。

echo ""
void echo(string $arg1 [, string $... ])


echoは引数に指定した文字列を出力する。
複数の文字列を続けて出力する場合、カンマ,で区切って文字列を指定する。

 echo 'こんにちは';
 echo '出身地:', '東京都';


厳密にいうと、echoは関数ではなくPHPの言語構造の1つである。
そのため、引数を括弧で括る必要はなく、関数のように括弧で括って記述することもできる。
ただし、複数の文字列を引数に指定する場合、括弧で括らない方がよい。

 echo('こんにちは');


printの書式は、以下の通りである。

print ""
int print(string $arg)


printは、引数に指定した文字列を出力する。echoとは異なり、複数の引数を指定できない。
また、戻り値として常に1を返す。

 print 'こんにちは';


printechoと同様、関数ではなくPHPの言語構造の1つである。
そのため、引数を括弧で括る必要はなく、関数のように括弧で括って記述することもできる。

 print('こんにちは');



エスケープシーケンス

文字列として入力できない特殊な文字(改行文字等)が存在する。

このような特殊な文字を入力するために、\記号 + 1文字等を使用して、特殊文字等を記述することができる。
このような特殊な記述方法をエスケープシーケンスと呼ぶ。

エスケープシーケンスとして用意されているものには、以下のようなものがある。

¥n    改行
¥r    キャリッジリターン
¥t    タブ
¥¥    ¥文字
¥$    $文字
¥(    左括弧
¥)    右括弧
¥[    左括弧
¥]    右括弧
¥'    シングルクオーテーション
¥"    ダブルクオーテーション
¥nnn  8 進数表記
¥xnn  16 進数表記


エスケープシーケンスは、ダブルクオーテーションで囲まれた文字列の場合にのみ意味を持つ。
例えば、以下のように使用する。

 print "こんにちは¥n";
 print "名前は¥"伊藤¥"です";  // ダブルクオーテーションで囲まれた文字列の中で"を出力する場合


また、ダブルクオーテーションで囲まれた文字列の中で¥文字を出力する場合、¥¥と記述する。

※注意
シングルクオーテーションで囲まれた文字列の中でも、以下の2つだけはエスケープシーケンスとして扱われる。

¥'    シングルクオーテーション
¥¥    ¥文字


 print '出身地は¥'大阪¥'です';



変数展開

文字列をダブルクオーテーションで囲む場合やヒアドキュメントの場合、文字列に変数が存在する時、変数は格納されている値に置換される。
このような処理を変数展開と呼ぶ。

以下の例では、文字列に変数nameが記述されている。
この文字列を出力する時、"こんにちは。高橋 さん"と変数に格納されている値に置き換えて出力される。

 $name = '高橋';
 echo "こんにちは。$name さん";


変数展開において、変数が記述された位置の後ろにアルファベットが続く場合は、どこまでが変数名なのか区別できない場合がある。
以下の例では、変数colornamecolorを変数展開されてしまう。

 $colorname = 'red';
 echo "frame is $colornamecolor";


このように、どこまでが変数名なのか区別できない場合や配列変数等を使用する場合は、変数名を{}で囲んで記述する。

 $colorname = 'red';
 echo "frame is ${colorname}color";


※注意
シングルクオーテーションで囲んだ文字列で変数を記述しても、変数展開は行われない。