文字列型(string)

 状態:  閲覧数:6,816  投稿日:2011-03-08  更新日:  
■文字列には、3つの書き方がある。

1.引用符「'(シングルクォーテーション)」

2.二重引用符「"(ダブルクォーテーション)」

3.ヒアドキュメント構文



1.引用符「'(シングルクォーテーション)」

 
$narita = 'TEST1';
$haneda = 'TEST2';

echo 'hello, AIR';//普通の出力
echo '
';
echo 'hello, "AIR"';//文字列内にある二重引用符は、特別な意味を持つわけではないのでそのまま出力
echo '
';
echo 'hello, I\'m a AIR';//引用符で囲まれた文字列内に引用符を書くと、そこが文字列の終わりと解釈されてしまう、それを避けるために、引用符の前に「\(バックスラッシュ(OSの設定によっては、円マーク))」を付ける。すると、「\'」は、文字列の「'」として出力される。この機能を「エスケープ」と言い、「\」を、「エスケープシーケンス」と言う。
echo '
';
echo 'hello, \ AIR \\';//引用符で囲まれた文字列内に「\」を出力する際、「\」の後ろに特別な意味を持つ記号や文字が来なければ、そのまま記述すれば出力されるが、「\」の後ろに「'」が来る場合は、「\\」のように連続して書く。
echo '
';
echo 'hello, AIR \r\n Good Bye';//引用符の中では変数は展開されず、そのまま\r\nと出力される。ちなみに、「\r」は「改行(キャリッジリターン)」、「\n」は「改行(ラインフィールド)」という意味を持った「エスケープシーケンス」
echo '
';
echo 'hello, AIR $narita $haneda';//引用符の中では変数は展開されず、文字列としてそのまま出力される

▼結果

  /demo/string_singlequotation.html






2.二重引用符「"(ダブルクォーテーション)」

 
$narita = "TEST1";
$haneda = "TEST2";

echo "hello, AIR";
echo "
";
echo "hello, \"AIR\"";
echo "
";
echo "hello, I'm a AIR";
echo "
";
echo "hello, \ AIR \\";
echo "
";
echo "hello, AIR \r\n Good Bye";//ソース上で改行。ブラウザ上で改行とは異なる意
echo "
";
echo "hello, AIR $narita $haneda";//二重引用符内では、変数は展開される
echo "
";
echo "hello, AIR {$narita} {$haneda}";//文字列と変数名を明確に区別。推奨される書き方
echo "
";
echo "hello, AIR ${narita} ${haneda}";//文字列と変数名を明確に区別。推奨される書き方

▼結果

  /demo/string_doublequotation.html






3.ヒアドキュメント構文

ヒアドキュメント(<<<)を使用すると、開始記号と終了記号の間に、複数行の文字を記述した場合、記述したとおりにプログラム処理を解釈してくれる。

ただし、開始の文字と終了の文字が同じである必要がある。



ちなみに、サンプルソースに記述してある「EOT」という文字列は、半角英語であれば、OK。
例えば、「EOL」など。※「END ONF LINE」=行末の意味。



なお、終了のEOTの文字列の存在する行にはEOT以外には何も記述してはいけない。EOFの左側にスペースやタブ等を記述してもエラーとなる。



長所:

・「"(ダブルクォート)」で囲まずに長文を書けるので、内部で「"(ダブルクォート)」が使える

 (HTML書くのに便利なのは特にこの点。複雑なSQLを書くときに利用されることもある)

・ヒアドキュメント内部で変数の展開はされる。{}で囲む。例{$hoge}



短所:

・「EOL;」のような終わりを示す文字列を必ず行頭に書かなければならない

 (インデントをきちんと書いているソースだとこれのせいで読みにくくなる)

・ヒアドキュメントの中でifやwhileなどのプログラムは書けない。これは、"(ダブルクォート)」で囲んだ文字列の中で変数展開はされるものの
ifやwhileなどのプログラムは書けない、ことと、同じ理屈に因るもの。








//変数に格納してから出力
$hode = <<< EOT
<em>NARITA 1</em>

<em>HANEDA 2</em>



EOT;

echo $hode;

//直接出力
echo <<< EOT
<em>NARITA 1</em>

<em>HANEDA 2</em>

EOT;

▽PHPのヒアドキュメント / 【超初心者のホームページ作成】

  http://beginners.atompro.net/faqphp_heardoc.html







その他.文字列の文字単位(バイト単位)でのアクセス



「{ }(中括弧、波括弧)」を利用して、文字列中の単一文字にアクセスすることが可能

 
$air = "abcdefghijklmnopqrstuvwxyz";//変数へ文字列を格納

echo $air;
echo "
";
echo $air{0};//「その文字列の先頭から何バイト目の文字か」を、整数値で指定
echo "
";
echo $air{10};
echo "
";

$air{25} = "A";//「先頭から25バイト目の文字z」部分に、Aを格納

echo $air;




mixed

コメント投稿(ログインが必要)



類似度ページランキング
順位 ページタイトル抜粋
1 文字列型(string) 100
2 整数型(integer) 67
3 switch文 42
4 Doctrine 40
5 session_start() 37
6 Generators 36
7 register_globals 36
8 isset 35
9 $this 35
10 session_destroy関数 34
11 syntax error 33
12 or(||) 33
13 SessionHandler::gc 33
14 register_shutdown_function 32
15 ob_start 30
16 session.gc_maxlifetime 29
17 static修飾子 29
18 set_error_handler 28
19 ErrorExceptionクラス 28
20 preg_match 27
2026/7/25 5:08 更新
週間人気ページランキング / 7-18 → 7-24
順位 ページタイトル抜粋 アクセス数
1 PHP用語 7
2 マジックメソッド(クラスとオブジェクト) カテゴリー 4
3 遭遇例1.存在する間違ったデータベース名を指定 3
3 リファレンス基本操作は3通り 3
3 ログイン 3
4 プログラムの基本三構造 | 制御構造 2
4 You currently have Essential access which includes access to Twitter API v2 endpoints only. If you need access to this endpoint, you’ll need to apply for Elevated access via the Developer Portal. | Twitter API(エラーメッセージ) 2
4 htmlspecialchars / htmlentities / addslashes / mysql_real_escape_string / mysqli_real_escape_string | セキュリティ 2
4 デフォルト引数 | 関数 2
4 Fatal error: Uncaught Error: Class 'Mecab_Tagger' not found in /var/www/★★.php:☆☆ | Fatal error(エラーメッセージ) 2
4 CodeIgniter 2
5 コンストラクタ デストラクタ | クラスとオブジェクト 1
5 PHPでcurlを使用するためには?/ 2.オプション設定 / curlでPOST送信 1
5 「添え字(インデックス)」と「要素(値)」で、構成されている 1
5 サニタイズ | セキュリティ 1
5 演算子 1
5 Strict Standards: DateTime::__construct() [function.DateTime---construct]: It is | エラーメッセージ 1
5 型の相互変換 | 型 1
5 Doctrine | データベース関連 1
5 トレイト | クラスとオブジェクト 1
2026/7/25 5:05 更新