目的
- PHPにてバイナリを用いて文字列を比較する方法をまとめる
情報
- 下記のサイトを用いてこちらに記載するソースの検証を実施した。
方法
-
strcasecmp()
メソッドを使用して比較する。 - ASCII文字だけが、大文字小文字を区別せず比較されるらしい。
-
$str_1
と$str_2
をそれぞれ比較してみる。 -
$str_1
には「aaa」を、$str_2
には「AAA」を格納し下記のように比較してみる。<?php $str_1 = 'aaa'; $str_2 = 'AAA'; echo strcasecmp($str_1, $str_2); // 0と出力される。
上記の処理は大文字小文字は関係なく、同一文字かを評価するので同一(つまりintの'0')が返される。
その他の検証
-
$str_1
には「aaa」を、$str_2
には「bbb」を格納し下記のように比較してみる。<?php $str_1 = 'aaa'; $str_2 = 'bbb'; echo strcasecmp($str_1, $str_2); // -1と出力される。
バイナリ比較して第一引数 < 第二引数となる時は負の数が返されるらしい。
-
$str_1
には「bbb」を、$str_2
には「aaa」を格納し下記のように比較してみる。<?php $str_1 = 'bbb'; $str_2 = 'aaa'; echo strcasecmp($str_1, $str_2); // 1と出力される。
バイナリ比較して第一引数 > 第二引数となる時は正の数が返されるらしい。
-
strcasecmp()
メソッドを使って第一引数と第二引数の文字列のバイナリ差分でif分岐を行いたい場合、下記の様に記載する。<?php if( strcasecmp($str_1, $str_2) === 0){ // $str_1と$str_2が一致している時の処理 }
参考文献