文字列リテラル -エスケープ処理‐

こんにちは、リスターマークです。
今日が2021年の10月1日です。気が付けば今年も残り2カ月ですね。

私事、病気を患ってから2年が経ちました。おかげさまで今はストレスない環境で体調も回復し、
規則正しい生活でコロナの中で出来ることを楽しんでおります(^^♪

目標は来年の4月から仕事開始できるようにすること。そろそろ就職エージェントなどを通じて就職活動をしていこうと思う今日この頃です。

さて、今日から今まで就労移行支援で学んできたことを中心に足跡を残していこうということでnoteを書いていきます。

今日は、PHPの基本である文字列リテラルについてです。


まず下のソースコードを見てください。

<?php
echo 'he is a player' ; // ⓵
echo "he is a player" ; // ⓶
?>

⓵は echoの後をシングルクォート(’)で囲み、
⓶は echoの後をダブルクォート(”)で囲んでいます。

問題です。
PHPの場合、どちらのソースコードで入力するのが正しいでしょうか?

・・・・・・・・・・・・・・・・・・・

・・・・・・・・・・・・・・・

・・・・・・・・・


正解は
両方とも正しいです (^^♪

つまり、どちらの入力を仕方をしても結果は

he is a player

として帰ってきます。


では、次の場合はどうでしょうか?

<?php
echo 'he's "great" player ' ;
?>

先ほどとは違うのは he is ではなく、 he's という単語にしたことと、 "great"という単語を入れました。

今回求める結果は、 

he's  "great" player  と出力してほしいのです。

けど、結果は上記の場合エラーが出ます(´・ω・`)

<?php
echo 'he's "great" player ' ;
?>
// 結果:エラー


理由としては、シングルクォートが3つあるという認識をコンピュータはしてしまうからです。

シングルクォートもダブルクォートも2個いちでないとエラーになってしまうのです

ではこれをうまく解消するには下記のやり方を行っていきます。

he'sの 'sのところにバックスラッシュ(\)を入れます。

<?php
echo 'he\'s "great" player ' ;  //  'sの前に\をいれる
?>

// 結果:he's "great" player

これで、結果はうまく表示されます。


この方法をエスケープ処理というみたいです。

エスケープ処理とは「ある文脈の中で意味を持つ文字をルールに基づいて無効化する」ことを言います

今回の内容でいうと、 he'sの ’のところをプログラミング用語ではなく、英語のアポストロフィーとして認識してもらうために、

’の前に\を入れているということで、解消されます。

今回はwindowsでやってみました。エスケープシーケンスはPHPの公式ドキュメントを見ればいろいろとありますので、またそちらも参考にしてみてください。


久しぶりの投稿でしたが、PHPを学び始めて半年たちました、一つずつやってきたことをここにアウトプットできるように頑張っていきたいと思います。


雑な文章でしたが、お付き合いしていただきありがとうございました。



この記事が気に入ったらサポートをしてみませんか?