UPDATE:2023年06月09日
PHP 文字列の取り扱い
文字列の扱い簡単まとめ
1 Minute Note
- 文字列は " (ダブルクォート) か ' (シングルクォート) で囲む12echo '文字列';echo "文字列";
- " (ダブルクォート) は 変数展開される
- ' (シングルクォート) のエスケープシーケンス
\' シングルクォート
\\ バックスラッシュ - " (ダブルクォート)のエスケープシーケンス
\' シングルクォート
\" ダブルクォート
\n 改行
\r 復改
\t タブ
\\ バックスラッシュ
\$ ドル記号
\{ 左波括弧
\} 右波括弧
\[ 左角括弧
\] 右角括弧
\0 から \777 8進数形式で表したASCII文字
\x0 から \xFF 16進数形式で表したASCII文字
文字列の取り扱い
- 文字列を扱う場合、 "(ダブルクォート) か '(シングルクォート) で文字列を囲む12echo '文字列';echo "文字列";
PHPで文字列を扱う場合は「 " (ダブルクォート) 」か「 ' (シングルクォート) 」で文字列を囲みます。そうすることでPHPから文字列として処理されます。文字列とは文字が連なったもので単語や文章になるものです。文字列のデータ型は文字列型になります。「PHP の 文字列型 (string) について」
簡単な例を見てみましょう。以下の例は「 ' (シングルクォート) 」で囲い文字列として扱っています。
1 2 3 | <?php echo 'Hello World!'; ?> |
です。
結果は
となります。
echo で「Hello World!」という文字列を表示させています。
例えば
1 2 3 4 | <?php echo "1+1"; echo '2+2'; ?> |
とした場合、
結果は
2+2
となります。
式が文字列としてそのまま表示されます。1+1は「 " (ダブルクォート) 」、2+2は「 ' (シングルクォート) 」で囲むことで式ではなく文字列として処理されました。
それでは次に
1 2 3 4 | <?php echo 1+1; echo 2+2; ?> |
とした場合、出力すると計算結果が表示されます。
4
となります。
こちらは文字列ではなく式として処理されて式の結果が表示されています。
以下の例では条件式が実行され
1 2 3 | <?php if(1+1 == 2) echo 'TRUE'; ?> |
結果は
となります。
条件式を「 " (ダブルクォート) 」で囲むと唯の文字列として扱われ、
1 2 3 | <?php echo "if(1+1 == 2) echo 'TRUE';"; ?> |
結果は
となります。
※echo で出力する際「 " (ダブルクォート) 」を利用していることに注意して下さい。
ダブルクォートとシングルクォートの違い
- 「 " (ダブルクォート) 」は変数展開される
- 「 " (ダブルクォート) 」と「 ' (シングルクォート) 」では扱うエスケープ文字列が違う
「 ' (シングルクォート) 」で囲まれた場合も「 " (ダブルクォート) 」で囲まれた場合も文字列として扱われますが、両者には幾つか違いがあります。
「 " (ダブルクォート) 」は変数展開できる
「 " (ダブルクォート) 」で囲まれた中に変数があると変数箇所が格納されているデータに置き換わります。これを変数展開といいます。または、変数のパース(Parse)とも言います。「 ' (シングルクォート) 」だと変数は展開されません。
「 " (ダブルクォート) 」で変数を囲むと変数展開され、以下のような結果になります。
1 2 3 4 | <?php $greeting = "こんにちは!"; echo "$greeting"; ?> |
となります。
「 ' (シングルクォート) 」だと、変数の $greeting がそのまま表示されてしまいます。
1 2 3 4 | <?php $greeting = "こんにちは!"; echo '$greeting'; ?> |
となります。
変数展開の詳細に関しては「PHP の 変数」をご参照下さい。
扱うエスケープ文字列(エスケープシーケンス)が違う
「 " (ダブルクォート) 」と「 ' (シングルクォート) 」では扱えるエスケープ文字列(エスケープシーケンス)が異なります。
エスケープ文字列とは、通常の文字列では表せない特殊な文字や機能を表現するための規定された特別な文字列の並びのことです。エスケープ文字列は、「\ (バックスラッシュ) 」(環境によって円記号で表されます。円記号もバックスラッシュも同じ意です。)に続く1文字で表されます。この文字列をエスケープシーケンスといいます。
例えば、改行を表すエスケープシーケンスは、「\n」で表現できます。「\ (バックスラッシュ) 」+1文字で表現しています。「\n」 はソースコード中に改行を入力しろという指示になります。因みにブラウザ上での改行はHTMLタグの<br>となります。改行の詳細は「PHP の 改行」を参照下さい。
「\ (バックスラッシュ) 」(日本語環境では円記号となる場合もある)には、 2つの使用法があります。
-1- ひとつめの使用法は、上記のエスケープシーケンスを作るための使用方法です。「\ (バックスラッシュ) 」(円記号で表されます)に続く1文字で特殊な機能を持つエスケープシーケンスを作成します。下記表を確認下さい。
-2- もう一つは、非英数字の前に記述する場合で、続く文字が表す特別な意味を取り去る、エスケープ文字としての使用方法です。 「\ (バックスラッシュ) 」に続く文字をそのままの文字として扱えるようにします。このエスケープ文字としての使用法は、 正規表現の文字クラスの内部でも外部でも、いずれでも可能です。
例えば
1 2 3 | <?php echo 'This is Tom\'s pen.'; ?> |
「Tom's」のシングルクォート「'」を意味を持たない文字列にするため「'」の前に「\ (バックスラッシュ) 」を配置しています。
出力すると[ This is Tom's pen. ]となります。「Tom\'s」にバックスラッシュが配置されず「Tom's」とした場合、「Tom'」で文字列が終了することになり、後に続く「s pen.';」が意味をなさないコードになり、エラーが発生してしまいます。
「 " (ダブルクォート) 」で扱えるエスケープシーケンス
エスケープシーケンス(エスケープ文字列) エスケープ文字(「\ (バックスラッシュ) 」(円記号で表されます))+1文字 | そのシーケンスが表す文字 |
---|---|
\" | ダブルクォート |
\n | 改行(ラインフィード) |
\r | 復改(キャリッジリターン) |
\t | 水平タブ |
\v | 垂直タブ |
\\ | バックスラッシュ(円記号) |
\$ | ドル記号 |
\{ | 左波括弧 |
\} | 右波括弧 |
\[ | 左角括弧 |
\] | 右角括弧 |
\0から\777 | 8進数形式で表したASCII文字 |
\x0から\xFF | 16進数形式で表したASCII文字 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <h3>ダブルクォートで囲んだ文字列で扱うことができるエスケープシーケンス</h3> <?php echo "\""; //ダブルクォート echo "\n"; //改行 echo "\r"; //復改 echo "\t"; //タブ echo "\\"; //バックスラッシュ echo "\$"; //ドルマーク echo "\{"; //左波括弧 echo "\}"; //右波括弧 echo "\["; //左角括弧 echo "\]"; //右角括弧 echo "\777"; //8進数形式で表したASCII文字 echo "\xFF"; //16進数形式で表したASCII文字 ?> |
「 ' (シングルクォート) 」で扱えるエスケープシーケンス
エスケープシーケンス(エスケープ文字列) エスケープ文字(バックスラッシュ「\」(円記号で表されます))+1文字 | そのシーケンスが表す文字 |
---|---|
\' | シングルクォート |
\\ | バックスラッシュ |
1 2 3 4 5 | <h3>ダブルクォートで囲んだ文字列で扱うことができるエスケープシーケンス</h3> <?php echo '\''; //シングルクォート echo '\\'; //バックスラッシュ ?> |
小文字 を 大文字 に変換
PHP4.3 PHP5 PHP7 PHP8
string 文字列 = mb_strtoupper('string $string');
- パラメーター:「string $string 」アルファベットを大文字に変換する文字列を入力します。
- 返り値:「string $string」すべてのアルファベットを大文字に変換した文字列を返します。
1 2 3 4 5 6 | <?php //小文字を大文字にする $string = "Let's study the PHP programming!"; $string = mb_strtoupper($string); echo $string."<br>\n"; ?> |
結果は
となります。
大文字 を 小文字 に変換
PHP4.3 PHP5 PHP7 PHP8
string 文字列 = mb_strtolower('string $string');
- パラメーター:「string $string 」アルファベットを小文字に変換する文字列を入力します。
- 返り値:「string $string」すべてのアルファベットを小文字に変換した文字列を返します。
1 2 3 4 5 6 | <?php //大文字を小文字にする $string = "Let's study the PHP programming!"; $string = mb_strtolower($string); echo $string."<br>\n"; ?> |
結果は
となります。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | <h3>シングルクォート</h3> <?php echo '1+1'; ?> <br> <?php echo 1+1; ?> <h3>ダブルクォート</h3> <?php echo "2+2"; ?> <br> <?php echo 2+2; ?> <h3>ソースコードを見てみてください。改行やタブが挿入されています。</h3> <?php echo " <table border=\"1\">\n<tr>\n\t<td>\\</td>\n\t\t<td>\$</td>\n\t\t\t<td>\{</td>\n\t\t\t<td>\}</td>\n\t\t\t<td>\[</td>\n\t\t\t<td>\]</td>\n\t\t<td>\777</td>\n\t<td>\xFF</td>\n</tr>\n</table> "; ?> <h3>ダブルクォートで囲んだ文字列で扱うことができるエスケープシーケンス</h3> <?php echo 'ダブルクォート:'; echo "\""; echo '<br>'; echo '改行:'; echo "\n"; echo '<br>'; echo '復改:'; echo "\r"; echo '<br>'; echo 'タブ:'; echo "\t"; echo '<br>'; echo 'バックスラッシュ:'; echo "\\"; echo '<br>'; echo 'ドルマーク:'; echo "\$"; echo '<br>'; echo '左波括弧:'; echo "\{"; echo '<br>'; echo '右波括弧:'; echo "\}"; echo '<br>'; echo '左角括弧:'; echo "\["; echo '<br>'; echo '右角括弧:'; echo "\]"; echo '<br>'; echo '8進数形式で表したASCII文字:'; echo "\777"; echo '<br>'; echo '16進数形式で表したASCII文字:'; echo "\xFF"; echo '<br>'; ?> |
シングルクォート
1+1
2
ダブルクォート
2+2
4
ソースコードを見てみてください。改行やタブが挿入されています。
\ | $ | \{ | \} | \[ | \] | � | � |
ダブルクォートで囲んだ文字列で扱うことができるエスケープシーケンス
ダブルクォート:"
改行:
復改:
タブ:
バックスラッシュ:\
ドルマーク:$
左波括弧:\{
右波括弧:\}
左角括弧:\[
右角括弧:\]
8進数形式で表したASCII文字:�
16進数形式で表したASCII文字:�
文字列関数サンプル
- 文字列の出力 echo
- 文字列の出力 print
- 文字列の出力 printf
- 文字列の出力 print_r
- 文字列の一部を取得したい
- 文字列の一部を取得したい(マルチバイト編)
- 文字列から最初と最後の空白を削除
- 文字列や変数の結合したい
- 文字列を置換したい
- 文字列を暗号化したい
- 文字列を比較したい
- 文字列を検索したい
- 文字列の出現数を調べたい
- 文字列の大文字小文字を置換したい
- 文字列を分割して配列に変換したい
- 文字列の長さを調べたい
- 文字列の長さを調べたい(マルチバイト)
- 文字列の全角半角の変換したい
- 文字列のHTMLタグを無効にしたい
- 文字列の HTMLタグ PHPタグ をしたい
- 文字列をURLエンコードしたい
- URLエンコードされた文字列をデコードしたい
- 文字列の改行コードを<br>に変換したい
- 文字列のSQL文中の特殊文字をエスケープしたい
タグ(=記事関連ワード)
日付
最終更新日:2023年06月09日