ITコラム

PHP 文字列 比較

PHP

2019.05.07

PHP【文字列】文字列の比較

PHP で文字列を比較すると、見た目が違う 2 つの文字列が等しいと判定されるなど、意図する結果が得られない場合があります。
今回は PHP で文字列を比較する方法を紹介します。
 
尚、本サイトでは XAMPP( ザンプ )という開発環境を使用しています。
XAMPP のインストール方法や起動方法については以下の記事をご参照下さい。
PHP【 開発環境 】XAMPP インストール
PHP【 開発環境 】XAMPP の使い方

最終更新日:2019年5月7日

目次

1.比較演算子で文字列を比較
2.strcmp で文字列を比較
3.strcasecmp で文字列を比較
 

1.比較演算子で文字列を比較

PHP で手軽に文字列を比較できるのは、比較演算子を使用する方法です。

比較対象の 2 つの文字列をイコール記号を使って次のように記述します。

文字列 1 == 文字列 2

文字列 1 === 文字列 2

「 == 」を使用すると 異なるデータ型間でも自動的にデータ型を揃えて値の比較が行われ、「 === 」を使用すると データ型を含めて比較が行われます。

文字列型の「 1 」と数値型の「 1 」を比較する場合、「 == 」を使用すると判定は true となり、「 === 」を使用すると判定は false となります。

比較演算子 のサンプル

比較演算子を使用して 文字列を比較してみます。

下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)

<pre>
<?php

  var_dump("1" == 1);
  var_dump("1" === 1);
  var_dump(1 == "1cm");
  var_dump(1 === "1cm");

?>
</pre>

「 “1” == 1 」が true で「 “1” === 1 」が false となるのは想定できますが、「 1 == “1cm” 」が true と判定されるのは意外な結果ではないでしょうか。

このように、数字を含む文字列を「 == 」で比較すると、意図した結果が得られない場合があります。
文字列内に数字が入ることはよくあることなので、比較演算子で文字列を比較する場合は「 == 」ではなく「 === 」を使用した方が安全です。

var_dump 関数についてはvar_dumpをご参照下さい。

また、<pre> ~ </pre> はデータを改行して出力するために記述しています。

▲目次へ戻る

 

2.strcmp で文字列を比較

strcmp 関数を使用して 文字列を比較することもできます。

strcmp 関数を実行すると、比較対象の文字列が等しければ 0 が、先に指定した文字列のサイズの方が大きい場合は 1 が、先に指定した文字列のサイズの方が小さい場合は -1 が 返ります。
戻り値が true / false ではない点に注意が必要です。

strcmp 関数は 次のように記述して使用します。

strcmp ( 文字列 1, 文字列 2 ) ;

strcmp のサンプル

strcmp 関数を使用して 文字列を比較してみます。

下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)

<?php

  echo strcmp("PHP", "PHP");
  echo "<br><br>";

  echo strcmp("php", "PHP");
  echo "<br><br>";

  echo strcmp("PHP", "ピーエイチピー");

?>

「 echo 」は、データを出力するために使用する PHP の命令です。

strcmp 関数の引数で指定した 2 つの文字列が等しい場合は 0 が、等しくない場合は文字列のサイズを比較して 1 又は -1 が返っています。

上のサンプルでは「 strcmp(“PHP”, “PHP”) 」のように 比較する文字列を引数に直接指定していますが、通常は「 strcmp($str1, $str2) 」のように文字列変数を指定することが多いです。

システム内で文字列の比較をする場面では、文字列が等しいかどうかを判定して後続処理を分岐させるという流れになるのが一般的なので サイズの比較をすることはあまりないと思いますが、戻り値が true / false ではない点が要注意です。

▲目次へ戻る

 

3.strcasecmp で文字列を比較

文字列を比較する関数として、strcasecmp 関数もあります。

比較演算子や strcmp 関数がアルファベットの大文字と小文字とを区別して比較するのに対して、strcasecmp 関数は大文字と小文字とを区別せずに比較します。

strcasecmp 関数を実行すると、比較対象の文字列が等しければ 0 が、先に指定した文字列のサイズの方が大きい場合は 1 が、先に指定した文字列のサイズの方が小さい場合は -1 が 返ります。
戻り値が true / false ではない点に注意が必要です。

strcasecmp 関数は 次のように記述して使用します。

strcasecmp ( 文字列 1, 文字列 2 ) ;

strcasecmp のサンプル

strcasecmp 関数を使用して 文字列を比較してみます。

下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)

<pre>
<?php

  $str1 = "PHP_プログラマカレッジ";
  $str2 = "php_プログラマカレッジ";

  var_dump($str1 === $str2);
  var_dump(strcmp($str1, $str2));
  var_dump(strcasecmp($str1, $str2));

?>
</pre>

比較演算子及び strcmp 関数で文字列を比較すると「 PHP 」と「 php 」とは異なる文字列として判定されるのに対して、strcasecmp 関数を使用した場合は「 PHP 」と「 php 」とが等しい文字列として判定されます。

var_dump 関数についてはvar_dumpをご参照下さい。

また、<pre> ~ </pre> はデータを改行して出力するために記述しています。

▲目次へ戻る

SHARE

最新記事

img001

卒業生インタビュー

2019.08.28

【卒業生の声:田中さん】美容師からプログラマーへ転身!PCスキルゼロからチーム開発でリーダーを務めるまでに成長したその秘密に迫る

受講スクール プログラマカレッジ 受講期間 3ヶ月間 料金 無料 就職先 株式会社アニシス プログラマカレッジ卒業生の田中さんにお話しをお伺いしました! 目次 IT業界へ憧れ、PCスキルゼロからプログラマーを目指すー 独 […]

続きを見る

IMG_004

卒業生インタビュー

2019.08.20

【卒業生の声:渡邉さん】宮城の大学とプログラマカレッジへ通学を両立!限られた時間を有効活用し、希望するWEB系の会社へ内定。

受講スクール プログラマカレッジ 受講期間 3ヶ月間 料金 無料 就職先 某WEB系会社 プログラマカレッジ卒業生の渡邉さんにお話しをお伺いしました! 目次 新卒採用の切符を捨て、アイデアを形にできる仕事を目指す 質問が […]

続きを見る

無料相談する

INTERNOUS,inc. All rights reserved.