PHPのsubstr_compare()関数の使い方を徹底解説
PHPのsubstr_compare()関数は、指定した開始位置から2つの文字列を比較するための組み込み関数です。文字列の一部分だけを抜き出して比較したい場合に便利で、大文字・小文字を区別するかどうかも指定できます。
基本構文
substr_compare(str1, str2, offset, len, case_insensitive)
パラメータの詳細
str1 − 比較対象となる最初の文字列
str2 − 比較対象となる2番目の文字列
offset − 比較を開始する位置。負の値を指定した場合は、文字列の末尾から数えた位置が開始点になります。
len − str1から比較する文字列の長さ
case_insensitive − TRUE を指定すると、大文字と小文字を区別せずに比較します(省略可能)。
戻り値
substr_compare()関数は、比較結果に応じて以下の値を返します。
0 − 2つの文字列が等しい場合
0より小さい値 − offset以降のstr1がstr2より小さい場合
0より大きい値 − offset以降のstr1がstr2より大きい場合
また、len の値が str1 の長さ以上である場合、この関数は FALSE を返す点に注意が必要です。
使用例1:基本的な比較
<?php
echo substr_compare("pqrstrs", "qr", 1, 2);
?>
出力結果
0
この例では、「pqrstrs」の1文字目(オフセット1)から2文字分「qr」を取り出し、「qr」と比較しています。両者は一致しているため、戻り値は 0 となります。
使用例2:比較する長さを変えた場合
<?php
echo substr_compare("pqrstrs", "qr", 1, 3);
?>
出力結果
1
今度は長さを3に指定しました。オフセット1から3文字分の「qrs」と「qr」を比較すると、str1側の方が大きいため、戻り値は 1 になります。
使用例3:大文字・小文字を区別しない比較
<?php
echo substr_compare("Laptop", "AP", 1, 2, true)."\n";
?>
出力結果
0
第5引数に true を渡すことで、大文字・小文字を無視した比較が行われます。「Laptop」の1文字目から2文字分の「ap」と「AP」は、大文字小文字を区別しなければ一致するため、戻り値は 0 です。
まとめ
substr_compare()関数を使うと、文字列全体ではなく任意の位置からの部分文字列同士を効率的に比較できます。offsetやlenを活用することで柔軟な文字列比較が可能になり、case_insensitiveパラメータを指定すれば大文字・小文字の違いを吸収した比較も簡単に実装できます。ただし、lenがstr1の長さを超えるとFALSEが返される仕様は覚えておきましょう。
-
PHPのcrc32()関数とは?使い方とデータ整合性チェックの方法
crc32()関数は、文字列から32ビット長のCRC(巡回冗長検査)チェックサムを計算するためのPHP組み込み関数です。主にデータの整合性を検証する目的で使用され、送信前後のデータが一致しているかどうかを簡単に確認できます。crc32()関数の概要CRC(Cyclic Redundancy Check:巡回冗長検査)は、データ通信やファイル転送時に発生する誤りを検出するための代表的な手法です。crc32()関数を使えば、任意の文字列に対応するチェックサム値(整数)を取得できます。同じ入力に対しては常に同じ値が生成されるため、データが途中で破損・改変されていないかを検証する際に役立ちます。構文c
-
PHPのbin2hex()関数とは?文字列を16進数に変換する方法をわかりやすく解説
PHPのbin2hex()関数は、文字列(ASCII文字)を16進数表現に変換するための組み込み関数です。バイナリデータや文字列を16進数の文字列として扱いたい場合に便利で、データのエンコード処理などによく利用されます。 構文 bin2hex(str) パラメータ str − 16進数に変換したい文字列を指定します。 戻り値 bin2hex()関数は、引数に渡されたASCII文字列を1バイトずつ16進数の値に変換し、その結果を文字列として返します。戻り値は常に英数字(0〜9、a〜f)で構成される文字列になります。 実際の使用例を見てみましょう。 例1:基本的な使い方 <?php