PHP基本 – エンジニアの入り口 https://eng-entrance.com 「エンジニアの入り口」は、プログラミング入門やエンジニアリング入門の知識が満載の初心者のための勉強サイトです。プログラミングやサーバ、ネットワークの基礎知識や勉強方法を習得できます。 Mon, 01 Mar 2021 02:54:35 +0000 ja hourly 1 https://wordpress.org/?v=5.2.19 【PHP入門者向け】 PHPの文字列リテラルについて知ろう https://eng-entrance.com/php-string-literal https://eng-entrance.com/php-string-literal#respond Sun, 07 Jul 2019 01:25:10 +0000 https://eng-entrance.com/?p=7582 リテラル(literal)は、「文字どおり」「字義どおり」を意味する言葉で、プログラミングにおいては計算結果などが反映される変数と違って「最初からその内容と決めておく」ものとして使われるものである。PHPにおいて文字列をリテラルとして扱うとはどういう事なのかを紹介しよう。

文字列リテラル

PHPにおける文字列リテラル

PHPにおける文字列は、可変長文字列であり、その他のプログラミング言語にあるようなchar型といった「単の一文字」は存在しない。

例えると、文章と単語を区別して扱う必要がないということだ。

文字列リテラルは大きく3つある。

ひとつは、シングルクオートによるもの、もうひとつはダブルクオートによるもの、そして最後にヒアドキュメントによる方法を説明していこう。

シングルクオートによる表現

「‘」によって、文字列を表すことが出来る。

<?php
$str = 'これが文字列';
echo $str;

結果は下記のようになる。

ではもう少し実用的な例をみていこう。

いくつかの文字列を結合して出力したい場合があるだろう。

例えば、「PHPレッスン:文字列リテラル」と出力したいとして、下記のようなスクリプトを書いたとする。

<?php
$str = '文字列リテラル';
echo 'PHPレッスン: $str';

結果はこのようになる。

あいにく、「‘」シングルクオートによる文字列リテラル表現では、変数と文字列とは一緒に表示することが出来ない。

シングルクオートはあくまでも、文字列のみか、変数のみか、その2択となる。

では上記のようなことを実現したい場合は、どうすればよいだろうか?

ダブルクオートによる表現

実は、PHPでは「”」ダブルクオートによる文字列リテラルの表現も可能だ。具体的な例をみてみよう。

<?php
$str = '文字列リテラル';
echo "PHPレッスン: $str";

結果はこのようになる。

さきほどのシングルクオートでは実現できなかった、文字列と変数の一緒の表示が出来た。

見ての通り、ダブルクオートによる文字列リテラルには、シングルクオートにはない下記の機能がある。

  • 文字列中の変数展開
  • エスケープ文字の展開

ヒアドキュメントによる表現

実際の現場では、もっと複雑な文章を出力することになるだろう。

そうした時に、いちいちシングルクオートやダブルクオートで出力させていると、プログラムの記述量が増え、一覧性も悪くなってしまう。

そうした場合に活用できるのがヒアドキュメントと呼ばれる文字列リテラルだ。

<?php
$mydream = "たくさんのプログラムを書いて世の中に貢献すること";
$myinfo = <<<EOD
はじめまして。私の夢は{$mydream}です。よろしくお願いします。
EOD;
echo $myinfo;

結果は下記のようになる。

このプログラムについて説明しよう。

まず、$mydreamという変数に具体的な「夢」についての文章をセットする。

次にEODという文字が2つある。

これがヒアドキュメントで、具体的には、

<<<EOD から EOD;  で囲われた範囲をまるごと、文字列表現としてセットすることが出来る。

今回の例だと、「はじめまして」から「よろしくお願いします。」までだ。

ヒアドキュメントそのものは、出力する機能はないため、その文字列のセットを$myinfoという文字列にセットする。

そして最後にechoにて$myinfoの変数の中身を出力している。

ここでのポイントとしては、「 私の夢は{$mydream}です 」の部分だ。

ダブルクオートのところで、文字列と変数との一緒の出力は「“」ダブルクオートで囲んでいれば展開されて出力されると説明したが、少し注意も必要だ。

 

たとえば、下記のような場合だ。

<?php
$str = "abc";
echo "$strdef";

この場合、出力結果は 白紙 になる。

なぜだろうか?

よく見てみてほしい。

echo "$strdef";

プログラムを作成した本人ならば、分かるかもしれないが、プログラムを解釈する側には、どこまでが変数で、どこからが変数ではない通常の文字列が分からないのだ。

こういう場合は、きちんと解釈してもらえるようにわかりやすくする方法がある。それが「{ }」 で変数を囲むという方法になる。

<?php
$str = "abc";
echo "{$str}def";

これでようやく正しく出力された。

ちなみに、ヒアドキュメントを使う場合の注意事項は下記の通り。

  • <<<に続く終端識別子は直前に空白などは含めない
  • 終端識別子を記載したらすぐに改行すること

以上がPHPによる文字列リテラルになる。

まとめ

PHPプログラミングでメッセージを出力する際に、一部に変数を含む文章などを出力するような場面が何度も出てくるだろう。本記事中で紹介したヒアドキュメントなどを活用してみてほしい。

 

]]>
https://eng-entrance.com/php-string-literal/feed 0
【1分理解】PHPの文字列をエスケープする方法 https://eng-entrance.com/php-escape https://eng-entrance.com/php-escape#comments Mon, 12 Jun 2017 06:24:55 +0000 https://eng-entrance.com/?p=5880 PHPを扱っていれば特殊な文字でエスケープが必要なシーンはどうしても出てくる。

このページではPHPの文字列エスケープについて見ていこう。

PHPでの文字列エスケープ

それでは簡単にPHPにおける文字列のエスケープについてみていこう。

エスケープの必要性

そもそもエスケープ処理とは、通常の記法では出力できないような文字をどうにかして出力させる処理のことをいう。

例えば、PHPにおいて文字列出力をする方法の1つに「’」で囲む記法があるが、その肝心の「’」を出力したい場合はどうすればよいだろうか。

まずは下記のコードを見ていただければと思う。

<?php
    echo '今日もA'は元気だ。';

文字のエスケープ

この出力を「今日もA’は元気だ。」にしたい場合はどうすればよいだろうか?

単純にこんなコードを書いてしまわないだろうか

<?php
   echo '今日もA’は元気だ。';

残念ながらこのPHPコードはコンパイルエラーになる。

「’」はそもそも文字列を囲む必要があるので、始まりと終わりで2つあればよい。だが、3つになってしまっているので、PHPで解釈できない。

ここで「’」を文字列として出力させたい時に使うのがエスケープ処理だ。

バックスラッシュ(もしくは¥)によるエスケープ

書き方は次のようになる。

<?php
   echo '今日もA\'は元気だ。';

「¥」もしくは「\」記号によって直後の文字をエスケープすることで、そのまま文字列として出力することができるようになる。

エスケープが必要な文字は何も、「‘」だけではない。改行やタブなど、普段出力を意識しないような文字にも利用される。

いくつかエスケープ例をあげよう。

PHPエスケープの実例

改行

<?php
      echo "今日も明日も\n元気でいこう";

実行結果は下記のようになる。

今日も明日も

元気でいこう

改行のエスケープシーケンスは「¥n」だ。

ちなみに、エスケープ文字によっては、ブラウザでは確認が難しいものがある。

この改行もそうなのだが、ブラウザを通して改行を表現するためには、HTMLタグである<br>を利用する必要がある。

だから、ここでは、純粋に素のPHPのサンプルとして上記の通り表すことにする。

エスケープ実例「タブ」

おなじみのタブも下記のようなコードで表すことができる。

<?php
    echo "今日も明日も\t元気でいこう";

タブのエスケープシーケンスは「¥t」だ。

エスケープシーケンスは他にもたくさんあるが、まずは上記を掴んでいただきつつ、必要なときに調べていただければと思う。

まとめ

このページではPHPの文字列エスケープについてお伝えをした。参考にしていただければ幸いだ。

]]>
https://eng-entrance.com/php-escape/feed 1
【PHP入門者向け】1分でわかるPHPコメントアウトの書き方 https://eng-entrance.com/php-basic-comment https://eng-entrance.com/php-basic-comment#respond Tue, 12 Jul 2016 01:33:57 +0000 http://eng-entrance.com/?p=1644 プログラミングにおいて、コメントは重要だ。コメントにして実行されない部分を作ることをコメントアウトという。

このページでは、PHPでのコメントアウトのやり方をお伝えした。本題を早く知りたいという方が多いと思うので、サクサクとお伝えする。

PHP入門者の方は参考にしてほしい。

コメントの書き方

そもそもコメントとは? また、どういうコメントが正しいコメントなのかを知りたい方は先に下のページを読んでみてほしい。

それでは、PHPのコメントについてご紹介していこう。

3種類のコメントアウト

PHPでのコメントの書き方は3パターンある。

//コメント

#コメント

/*コメント*/

「//」「/**/」はC系言語を引き継いでいて、「#」はUnix系のシェルのコメントを引き継いでいる。

使い方はそれぞれ次の通りだ。

<?php

//1行コメントだ

#1行コメントだ

/*複数行のコメント
複数行のコメント
複数行のコメント
複数行のコメント
*/

?>

  • 「//」は1行コメントだ。後ろの文字がコメントになる
  • 「#」も1行コメント。後ろの文字がコメントになる
  • 「/* */」は複数行のコメントだ。挟まれた部分がコメントになる

このPHPプログラムを実行しても何も表示されない。すべてコメントになっているからだ。

プログラムが長くなってくると、ここで何がしたいんだっけ?と思うことが増えてくる。

そんなときに備え、処理を分かりやすくするためにコメントを残そう。

複数行コメントのよくあるミス

複数行コメントは便利だが、コメントの終了を表す「*/」を忘れてしまうと、本来プログラムとして実行したかった部分までコメントアウトされてしまう。

ページが真っ白で動かないという時には、まず複数行コメントをしっかり閉じているかどうか確認しよう。

まとめ

PHPのコメントアウトの方法をお伝えしたがいかがだっただろうか? プログラミング言語によらない、コメントの書き方やポイントについては下記のページで詳しく説明している。

]]>
https://eng-entrance.com/php-basic-comment/feed 0
【PHP入門者向け】echoによる出力方法まとめ https://eng-entrance.com/php-basic-echo https://eng-entrance.com/php-basic-echo#comments Tue, 12 Jul 2016 00:40:46 +0000 http://eng-entrance.com/?p=1638 PHPで文字列を出力するときには「echo」を使用する。

PHPで最も基本的な出力方法で、一番はじめに習うものの一つだろう。

このページではechoの使い方について詳細も含めてまとめている。初心者の方は参考にしてほしい。

echoで文字列を出力する

echoの基本

echoは1つ以上の文字列を出力する。下のように使い方はシンプルだ。

echo 文字列

複数の文字列を表示したい場合には、「,」で区切って書けばいい。

echo 文字列1, 文字列2・・・・

また、echoは関数的にも使える。

echo(文字列)

使えはするが、通常は括弧がない出力方法が使った方がいいだろう。

echo "Hello World!";
echo 'Hello World!';
echo("Hello World!");

これはechoに限らないが、分の区切りとして最後にセミコロン(;)を記述するのは忘れないようにしよう。

文字列の囲み方

echoに文字列を指定する場合はシングルクォーテーション(')またはダブルクオンテーション(")で囲む必要がある。

文字だけの場合はどちらを使っても構わないが、違いもある。次の通りだ。

変数を展開して表示する

変数を展開して表示したい場合には、ダブルクォーテーションを使う。例えば次の通りだ。

<?php

$a = "Hello";
echo "$a";

?>

出力結果は次のようになる。

Hello

変数も文字列として表示する

反対に、上記の「$a」という文字(変数の名前)をそのまま表示したい場合はダブルクォーテーションを使う。

<?php

$a = "Hello";
echo '$a';

?>

出力結果は次の通りだ。

$a

変数または定数しかないとき

変数または定数のみの場合はシングルクォーテーション(')またはダブルクォーテーション(")で囲む必要はない。

そのまま表示すればいい。

echo $a;

echoによる変数表示

変数を単体で表示させるには「echo $a;」とすれば表示させることができるが、文字列も一緒に出力させたい場合もある。

次のような例を考えてみたい。

$a = '入門';

echo "PHP$a";//①「PHP入門」と表示される

echo "$aPHP";//②変数$aPHPと認識されるので何も表示されない

①は期待通りの動作を行うが、②では何も表示されない。理由は簡単で「$aPHP」が、変数aPHPと認識されてしまっているからだ。

②を期待通り「入門PHP」と表示させたい場合は以下のようにする。

$a = '入門';

echo "{$a}PHP";//①「入門PHP」と表示される

echo $a."PHP";//②「入門PHPと表示される」 

①②ともに「入門PHP」と表示される。

波括弧 { } で変数を囲うことで区切りを作ることができる。①はそのようにして対処した例だ。

②は連結演算子ピリオド . を使用して変数aと文字列PHPを連結表示させている。「.」を使うと文字列をくっ付けることができる。

こちらの方が頻繁に見ると思うので覚えておいて欲しい。

まとめ

このページではechoによるPHP文字列の出力方法についてお伝えした。echoはPHPを扱う上で、なくてはならないものだ。

使いこなせるようになっておこう。

 

PS

PHP研修企業をまとめた記事を追加したのでご参考に

]]>
https://eng-entrance.com/php-basic-echo/feed 4
【PHP初心者向け】PHPの拡張子に関してのまとめ https://eng-entrance.com/php-basic-extension https://eng-entrance.com/php-basic-extension#respond Mon, 11 Jul 2016 06:58:47 +0000 http://eng-entrance.com/?p=1627 PHPの拡張子は「.php」だ。ただ、実は「.php」以外でも動く。

このページではPHPの基本となる.php拡張子と、.htmlや.phtmlといった拡張子でもPHPプログラムを動かす方法についてお伝えする。

PHP拡張子の表示

ファイル名の末尾には通常、拡張子と呼ばれる識別子が付いている。そのファイルがどんな種類のファイルであるかを示すための記号だ。例えば、「example.html」はhtmlという拡張子で、webページである事を示している。PHPプログラムの拡張子は「.php」だ。

普段はあまり気にしていないかもしれないが、プログラムを作成する上で重要になってくるため、拡張子が表示できているか確認してください。

では簡単なプログラムで試して見る。

php拡張子を使った場合

次のようにsample「.php」というファイルを作ってみる。

sample.php

<!DOCTYPE html >
<head>
  <meta charset="utf-8">
  <title>サンプル</title>
</head>
<body>
  <p>こんにちは。</p>
  <p>
  <?php
    echo "お元気ですか?";
  ?>
  </p>
</body>
</html>

上記のファイルを

  • httpサーバのドキュメントルート以下
  • XAMPPのhtdocs以下

のいずれかに設置する。

そうすると、ブラウザからアクセスすると次のように表示される。

apacheの様子

Webサーバはクライアントから要求されたファイルの拡張子に「.php」が付いていることからページ内にPHPプログラムが含まれていることを認識する。そしてPHPプログラムを処理した後の結果をクライアントへ返す。

実際にブラウザに表示されたページのソースを確認すると次のようになっている。ソースを表示するのは、右クリックして「ソースを表示」をクリックしよう。

php ソースコード

phpという部分がまったくなくなっているのがわかる。

PHPプログラム部分はもう処理されており、画面に出力される時点ではPHPのプログラムがどのように記述されていたかは分からなくなっている。

html拡張子を使った場合

続いてまったく同じファイルの拡張子を「.php」から「.html」に変更してみよう。拡張子の変更と言っても難しくはない。ファイルの名前を変更する方法とまったく同じだ。最後の「.php」の文字を「.html」に変更すればいいだけだ。

拡張子の変更

ファイルの中身はまったく同じままで拡張子を「.html」とした場合も試してみる。ブラウザからアクセスすると次のように表示される。

htmlの拡張子

今回は拡張子が「.html」となっているためPHPプログラムが含まれているページであるとWebサーバが認識していない。その為、PHPプログラム部分の処理は行われずそのままクライアントに送信されている。

実際にブラウザに表示されたWebページのソースを確認すると次のようになっている。

phpがコメントになっている

HTMLページ内に含まれているPHPのプログラムがサーバ側で処理されずそのままクライアントへ送信されてしまっていることが確認できる。

初心者の方は、まず知っておけば十分だ。この下はこういうこともできるんだ、というのを知っておくだけで十分だろう

htmlなど他の拡張子でもPHPは動く!

色々な事情で、php拡張子ではなくhtml拡張子でもPHPプログラムを動かしたい、ということがある。

例えばどんなとき?

例えば、あるサイトをPHPを使って便利にしたとしよう。予約フォームがついたとか、カレンダーがついたとか、なんでも構わない。

そのとき、.htmlだった拡張子を.phpに変えなければ行けなくなってしまう。こうすると、URLがすべて変わってしまうため、チラシに載せたサイトへアクセスするためのURLも、SEOに役立っていたリンクの効果などもなくなってしまう。

だから、html拡張子のままPHPを動かせればベストだ。

実施方法

Apacheの設定を変更する必要がある。

/etc/httpd/conf.d/php.conf

/etc/httpd.conf

などのファイルがあるはずだ。そこで下記のような記述がある。

AddHandler php5-script .php 

これを次のように変更すればいい ↓

AddHandler php5-script .php .html

phpで動く拡張子を登録している形になる。再起動すれば、設定完了だ。

簡単にお伝えだけしておくが、Apacheの詳細な説明はまた別のページで解説をしよう。

まとめ

このページでは、PHP拡張子についてお伝えしてきたが、ご理解いただけただろうか?

詳細に関してもご説明はしたが、基本的にPHPを使う時にはphp拡張子を使うことをオススメする。特に初心者の間は混乱を避けるために、デフォルトの設定を使おう。

]]>
https://eng-entrance.com/php-basic-extension/feed 0
【超初心者向け】PHPの基本的な書き方とは? https://eng-entrance.com/php-basic-code https://eng-entrance.com/php-basic-code#comments Mon, 11 Jul 2016 02:41:20 +0000 http://eng-entrance.com/?p=1612 PHPはWebアプリケーションを作るのに、最適な言語のひとつだ。

他の言語に比べて描きやすいため、初心者がはじめに学ぶプログラミング言語として人気も高い。

PHPプログラミングを書けるようになるために、まず必要な基本的な書き方をまとめたのがこのページだ。

PHPをはじめて勉強する方は参考にしてほしい。

PHPプログラミングの基本

まず、「PHPとは?」であったり「PHPって何ができるの?」という疑問をお持ちの方は下記のページを先に確認してほしい。

PHPの基本的な書き方

PHPは、Webサイトを作るHTMLという言語の中に書き込む。

だから、先にHTMLを知っておかなければいけないが、このページでは、それは知っているという前提で話を進める。

開始タグと終了タグ

まずは、PHPプログラムを書く場合に必要な「開始タグと終了タグ」についてご説明しよう。

PHPは開始タグ「 <?php」 からはじまり、終了タグ 「?>」 で終わる。開始タグと終了タグの間にPHPスクリプトのコード(命令文、プログラム)を記述する。

次のような記述になる。

<?php ここにコードを書く; ?>

改行は気にされないので、会ってもなくても。あった方がやりやすいので、基本的には「<?php」の後も、「?>」の前も改行する事が多い。

例えば次のような形だ。

<?php
  ここにコードを記述する。
?>

HTMLに入れると次のようになる。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>PHPの基本的な書き方</title>
  </head>
  <body>
    <?php
      ここにコードを記述する。
    ?>
  </body>
</html>

例えば「Hello, World!」という文字列を出力するPHPスクリプトは以下のようになる。

echo "Hello, World!"

これをHTMLとPHPの中に入れてみる。

Hello Word! プログラム

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>PHPの基本的な書き方</title>
  </head>
  <body>
    <?php
      echo "Hello, World!"
    ?>
  </body>
</html>

 

開始タグ「 <?php」と終了タグ「?>」に「コード」が挟まれていることがわかるだろう。

出力結果

今はわからずともいいが、出力結果は次のようになる。

Hello, World!

おいおい解説をしていく。

コードの最後にはセミコロン

PHPスクリプトのコードの最後にはセミコロン「;」を記述する。

<?php
echo "Hello, World!";
?>

これが区切り文字になる。「;」がなければ、プログラムが続いていると思われる。

例えば「Hello, World!」を2個並べるには次のようななる。

<?php
echo "Hello, World!";
echo "Hello, World!";
?>

これは下記でもOKだ。

<?php
echo "Hello, World!"; echo "Hello, World";
?>

コードの間は半角スペース/タブ/改行で区切る

サンプルコード

次のようなプログラムコードがあったとしよう。

<?php
echo "Hello,World!";(半角スペース)

echo     "Hello,World!";(タブ) 

echo
"Hello,World!";(改行)
?>

といった具合だ。

コードの最後にセミコロン「;」、命令の間を「半角スペース」「タブ」「改行」で区切れば、どのように記述しても構わない。

そのため上のどのPHPコードも同じように「Hello, World!」という文字列を出力する。

通常は?

通例、1行のコードが長くなった場合にスクリプトを読みやすくするために改行を入れるが、HTML内でPHPスクリプトを実行する場合などは、改行を入れずにスクリプトを記述する場合が多い。

PHPで開発されているブログシステムであるWordPressのテーマ内のコードなどは改行なしのコードがよく見られる。

これは主となるHTMLコードを読みやすくするためだ。

読みやすいスクリプトは、バグを防ぐことができるので、改行、インデント、コメントを適切に使って、読みやすいスクリプトを普段から心がける必要がある。

まとめ

PHPの基本中の基本についてお伝えしてきたがいかがだっただろうか?

ここまでは難しいと思う人はほとんどいないだろう。徐々に難易度が上がっていくのでなんとか付いていき、エンジニアの入り口までたどり着いてほしい。

]]>
https://eng-entrance.com/php-basic-code/feed 2