関数・クラス解説
strcoll
version:PHP 4 >= 4.0.5, PHP 5, PHP 7 (公式)ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する
フォーマット
int : strcoll ( string $str1 , string $str2 )
パラメータ
string $str1 (必須)
比較したい文字列1
string $str2 (必須)
比較したい文字列2
返値 int
2つの文字列が同じと判断された場合は 0 が返ります。比較の結果str1 が str2 より大きいと判断された場合は正の数値が返り、逆の場合は負の数値が返ります。
解説
この関数は文字列を同じか、あるいは大きいか小さいかを数値で返却します。大きいか・小さいかの判定は、単純に長さで比較されるわけではないことに注意してください。また比較は大文字小文字を区別することにも注意してください。
一見strcmp() と同様の作動をしますが、大きな違いはこの strcoll() 関数がバイナリセーフではないことです。※バイナリセーフ関数とは、文字列中にヌルバイト(\x00,\0)が入っていても、きちんと正しく取り扱うことのできる関数です。バイナリセーフではない関数は、ヌルバイト攻撃の対象となりえます。
記述サンプル
//PHP 7.4.6で実行
//ロケールを日本語にセットする
setlocale (LC_COLLATE, 'ja_JP.UTF-8');
$str1 = "テスト文字列を設定";
$str2 = "テスト文字列を設定\x00";
//実行
$result = strcoll($str1, $str2) . '<br />';
//結果
echo $result;
0
//バイナリセーフなstrcmp() で実行
$result = strcmp($str1, $str2) . '<br />';
//結果がバイナリセーフかどうかで異なる
echo $result;
1
参考リンク
・preg_match 正規表現によるマッチングを行う・setlocale ロケール情報の設定を行う
・strcasecmp 2つの文字列を比較(大文字小文字を区別せず同じとみなす)
・strcmp 2つの文字列を比較し同じか(あるいは大小)を判定する
・stristr 大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却
・strncasecmp バイナリセーフで大文字小文字を区別しない文字列比較を、最初の n 文字について行う
・strncmp 最初の n 文字についてバイナリセーフな文字列比較を行う
・strstr 文字列が最初に現れる位置を見つける
・substr 文字列の一部分を返す
タグ
ロケール 比較 バイナリセーフ String 文字列
公式リファレンス
書式
strcoll ( string $str1 , string $str2 ) : int
説明
この比較は大文字小文字を区別すること、そして、 strcmp() とは異なり、 バイナリセーフではないことに注意してください。
strcoll() は比較を行う際に現在のロケールを使用します。 ロケールが C または POSIX の場合、この関数は strcmp() と等価です。
パラメータ
- str1
- 最初の文字列。
- str2
- 次の文字列。
返値
str1 が str2 より小さい場合に 0 未満の値、str1 が str2 より大きい場合に 0 より大きな値、 両者が等しい場合に 0 を返します。
参考
ワード検索
※入力キーワードが、関数名・説明文・タグに含まれるものを検索関数名アルファベット別
最終更新一覧
●stristr
大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却
●stripslashes
バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く
●stripos
大文字小文字を区別せずに文字列が最初に現れる位置を取得する
●stripcslashes
addcslashes() でクォートされた文字列をアンクォートする
●strip_tags
文字列から HTML と PHP のタグを除去して返却
●strcspn
指定した文字が最初に現れる位置を調べる
●strcoll
ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する
●strcmp
2つの文字列を比較し同じか(あるいは大小)を判定する
●strchr
strstr() のエイリアス
●strcasecmp
2つの文字列を比較(大文字小文字を区別せず同じとみなす)
カテゴリー一覧
PHP の振る舞いの変更
音声フォーマットの操作
認証サービス
コマンドライン関連
圧縮およびアーカイブ
暗号
データベース関連
日付および時刻関連
ファイルシステム
自然言語および文字エンコーディング
画像処理および作成
メール関連
数学
テキスト以外の MIME 型
プロセス制御
その他の基本モジュール
その他のサービス
検索エンジン用の拡張モジュール
サーバー固有のモジュール
セッション関連
テキスト処理
変数・データ型関連
ウェブサービス
Windows 用のモジュール
XML 操作
GUI用の拡張モジュール