指定した位置から指定した長さの 2 つの文字列について、バイナリ対応で比較する

# substr_compare

(PHP 5, PHP 7)

substr_compare — 指定した位置から指定した長さの 2 つの文字列について、バイナリ対応で比較する

### 説明

substr_compare ( string `$main_str` , string `$str` , int `$offset` [, int `$length` [, bool `$case_insensitivity` = `FALSE` ]] ) : int

substr_compare() は、`main_str` の `offset` 文字目以降の最大 `length` 文字を、`str` と比較します。

### パラメータ

`main_str`

  比較したい最初の文字列。

`str`

  比較したい二番目の文字列。

`offset`

  比較を開始する位置。 負の値を指定した場合は、文字列の最後から数えます。

`length`

  比較する長さ。デフォルト値は、 `main_str` の長さから `offset` を引いたものと `str` の長さのうち、長いほうです。

`case_insensitivity`

  `case_insensitivity` が `TRUE` の場合、 大文字小文字を区別せずに比較します。

### 返り値

`main_str` の `offset` 以降が `str` より小さい場合に負の数、 `str` より大きい場合に正の数、 等しい場合に 0 を返します。`offset` が `main_str` の長さ以上であるか、あるいは `length` が設定されていて 1 未満である場合 (PHP 5.5.11 より前のバージョン)、substr_compare() は警告を表示して `FALSE` を返します。

### 変更履歴

バージョン | 説明
--- | ---
5.5.11 | `length` を 0 にもできるようになりました。
5.1.0 | 負の `offset` を使用できるようになりました。

### 例

例1 substr_compare() の例

`<?php
echo substr_compare("abcde", "bc", 1, 2); // 0
echo substr_compare("abcde", "de", -2, 2); // 0
echo substr_compare("abcde", "bcg", 1, 2); // 0
echo substr_compare("abcde", "BC", 1, 2, true); // 0
echo substr_compare("abcde", "bc", 1, 3); // 1
echo substr_compare("abcde", "cd", 1, 2); // -1
echo substr_compare("abcde", "abc", 5, 1); // 警告
?>`

### 参考

- strncmp() - 最初の n 文字についてバイナリセーフな文字列比較を行う