文字列型(string)

 状態:  閲覧数:6,117  投稿日: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;



Twitter検索結果。「文字列型(string)」に関する最新ツイート


mixed

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



類似度ページランキング
順位 ページタイトル抜粋
1 整数型(integer) 67
2 switch文 42
3 Doctrine 40
4 session_start() 37
5 Generators 36
6 register_globals 36
7 $this 35
8 isset 35
9 session_destroy関数 34
10 SessionHandler::gc 33
11 or(||) 33
12 syntax error 33
13 register_shutdown_function 32
14 ob_start 30
15 session.gc_maxlifetime 29
16 static修飾子 29
17 set_error_handler 28
18 ErrorExceptionクラス 28
19 Sorry, that page does not exist. 27
20 preg_match 27
2023/6/02 3:21 更新
週間人気ページランキング / 5-26 → 6-1
順位 ページタイトル抜粋 アクセス数
1 ブラウザを閉じたらセッションデータはどうなるの? | セッション 30
2 Parse error: syntax error, unexpected 'public' (T_PUBLIC) | Parse error(エラーメッセージ) 13
3 PHP用語 12
3 Fatal error: Uncaught RuntimeException: SplFileObject::__construct(): failed to open stream: Permission denied in | Fatal error(エラーメッセージ) 12
4 スコープ | 変数 11
5 Fatal error: Access level to ▲::$△ must be protected (as in class ●) or weaker | Fatal error(エラーメッセージ) 10
5 ブラウザを閉じたらセッションデータはどうなるの? | セッション 10
6 Fatal error: require_once(): Failed opening required 'PEAR.php' | Fatal error(エラーメッセージ) 9
7 セッションID | セッション 8
8 セッション管理が必要な理由は、HTTPプロトコルには状態を保持する機能がないため | セッション 7
9 Warning: strlen() expects parameter 1 to be string, array given in ○○.php on line △△ | Warning(エラーメッセージ) 5
9 Warning: include() [function.include]: Failed opening '**.php' for inclusion (in | Warning(エラーメッセージ) 5
9 コード例 … 「例外処理」はネストすることができる 5
10 curl | その他のサービス 4
10 型の種類 | 型 4
10 Cookie | クッキー 4
10 @ | 演算子 4
10 Warning: PDO::query(): LOAD DATA LOCAL INFILE forbidden | Warning(エラーメッセージ) 4
10 Fatal error: Call to undefined method MDB2_Error::execute() in ○○ on line △△ | Fatal error(エラーメッセージ) 4
11 Fatal error: Cannot access protected property ○○ in △△ on □□ | Fatal error(エラーメッセージ) 3
2023/6/2 1:01 更新