PHP - 文字列

公開日:2020-12-22 更新日:2020-12-22
[PHP]

1. 概要

複数の文字のことを、文字列と呼びます。
文字列は、「"」(ダブルクォーテーション)か「'」(シングルクォーテーション)で囲います。
print('hello, ');
print("world\n");

もし文字列を「"」か「'」で囲わない場合は、その文字列をプログラムとして実行します。
例えば以下の場合、hello, world 自体をプログラムとして実行しようとします。
但し、hello や world と言った関数や構文がないため、エラーが発生します。
print(hello, world\n);
エラーメッセージ
Parse error: syntax error, unexpected ',' in C:\php_test\test.php on line 2
エラーが出た場合は、エラーメッセージにエラーが発生した行番号が出力されますので、その行に問題がないか確認してください。

2. 改行コード

文字列中で改行したい場合は、改行したい場所に「\n」を入れます。
エディターやブラウザによっては、スラッシュ「/」とは逆向きで表示されますが、
入力する時は、キーボードの右上の「¥」で入力します。
print("おはよう\nこんにちは");
実行結果
おはよう
こんにちは

「\t」でタブを出力することもできます。
print("おはよう\tこんにちは");
実行結果
おはよう        こんにちは

「\」(バックスラッシュ・円マーク)は特殊な文字で、「\」+文字で、制御コードになります。
そのため、以下のように「\」を1つだけにすると、エラーになります。
print("\");

もし「\」を文字として扱いたい場合は、先頭にもう1つ「\」を付けて、「\\」とします。
この時に付けた「\」のことをエスケープ文字と呼びます。
print("\\abc\\\\");
実行結果
\abc\\

文字列は「"」で囲いますが、「"」を文字として扱いたい場合も、先頭に「\」を付けます。
print("\"test\"");
実行結果
"test"

3. 文字列の結合

「.」を使うと、文字列と文字列を結合できます。
他の言語では、「+」を使って結合することが多いです。
print("abc" . "def" . "ghi" . "\n");
実行結果
abcdefghi

4. 「"」と「'」の違い

文字列を「"」で囲った場合、「\n」は改行コードになりますが、
文字列を「'」で囲った場合、「\」や「"」は、そのまま出力されます。
但し、「\\」は「\」に変換されるため要注意です。
print('\"hello"\n');
実行結果
\"hello"\n

また、変数についてまだ説明していませんが、「"」の中の変数は、値として変換されます。
$s = 'pen';
print("This is a $s.\n");
print('This is a $s.');
実行結果
This is a pen.
This is a $s.

5. 文字コード

メモリは、数値しか保持できません。
では、文字をどのようにして保持しているかと言うと、文字コードと言う数値で保持しています。
UTF-8 と言う文字セットの場合、半角英数字は、以下のように定義されています。
文字コード:文字
32:(半角スペース)
33:!
34:"
35:#
36:$
37:%
38:&
39:'
40:(
41:)
42:*
43:+
44:,
45:-
46:.
47:/
48:0
49:1
50:2
51:3
52:4
53:5
54:6
55:7
56:8
57:9
58::
59:;
60:<
61:=
62:>
63:?
64:@
65:A
66:B
67:C
68:D
69:E
70:F
71:G
72:H
73:I
74:J
75:K
76:L
77:M
78:N
79:O
80:P
81:Q
82:R
83:S
84:T
85:U
86:V
87:W
88:X
89:Y
90:Z
91:[
92:\
93:]
94:^
95:_
96:`
97:a
98:b
99:c
100:d
101:e
102:f
103:g
104:h
105:i
106:j
107:k
108:l
109:m
110:n
111:o
112:p
113:q
114:r
115:s
116:t
117:u
118:v
119:w
120:x
121:y
122:z
123:{
124:|
125:}
126:~
例えば、数字の1は、メモリ上では数値の 49 として保持されます。
それに対して数値の1は、メモリ上でも数値の 1 として保持されます。

全角の「あ」や漢字などは、2バイト以上の文字コードで定義されています。
例えば、UTF-8の「あ」は、「e3 81 82」と言う3バイトになります。