PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

strcspn> <strcmp
Last updated: Fri, 18 Jul 2008

view this page in

strcoll

(PHP 4 >= 4.0.5, PHP 5)

strcoll — ロケールに基づく文字列比較

説明

int strcoll ( string $str1 , string $str2 )

この比較は大文字小文字を区別すること、そして、 strcmp() とは異なり、 バイナリセーフではないことに注意してください。

strcoll() は比較を行う際に現在のロケールを使用します。 ロケールが C または POSIX の場合、この関数は strcmp() と等価です。

パラメータ

str1

最初の文字列。

str2

次の文字列。

返り値

str1str2 より小さい場合に 0 未満の値、str1str2 より大きい場合に 0 より大きな値、 両者が等しい場合に 0 を返します。

変更履歴

バージョン 説明
4.2.3 この関数が win32 でも動作するようになりました。



add a note add a note User Contributed Notes
strcoll
sakkarinlaohawisut15 at hotmail dot com
22-Mar-2003 11:31
strcoll()'s behavior is sometimes a little bit confusing. It depends on LC_COLLATE in your locale.

<?php

 $a
= 'a';
 
$b = 'A';

 print
strcmp ($a, $b) . "\n"; // prints 1

setlocale (LC_COLLATE, 'C');
 print
"C: " . strcoll ($a, $b) . "\n"; // prints 1

 
setlocale (LC_COLLATE, 'de_DE');
 print
"de_DE: " . strcoll ($a, $b) . "\n"; // prints -2

 
setlocale (LC_COLLATE, 'de_CH');
print
"de_CH: " . strcoll ($a, $b) . "\n"; // prints -2

 
setlocale (LC_COLLATE, 'en_US');
 print
"en_US: " . strcoll ($a, $b) . "\n"; // prints -2

?>

This is useful e. g. if want to sort an array by using strcoll:

<?php

 $a
= array ('a', 'A', '', '', 'b', 'B');

 
setlocale (LC_COLLATE, 'C');
 
usort ($a, 'strcoll');
 
print_r ($a);

?>

This is like sort($a):
 Array
 (
    [0] => A
    [1] => B
  [2] => a
    [3] => b
    [4] =>
    [5] =>
 )

<?php

 setlocale
(LC_COLLATE, 'de_DE');
usort ($a, 'strcoll');
 
print_r ($a)

?>

This is completely different:
 Array
 (
    [0] => a
    [1] => A
    [2] =>
    [3] =>
    [4] => b
  [5] => B
 )
27-Aug-2002 07:05
Note that some platforms implement strcmp() and strcasecmp() according to the current locale when strings are not binary equal, so that strcmp() and strcoll() will return the same value! This depends on how the PHP strcmp() function is compiled (i.e. if it uses the platform specific strcmp() found in its standard library!).
In that case, the only difference between strcoll() and strcmp() is that strcoll() may return 0 for distinct strings(i.e. consider strings are equal) while strcmp() will differentiate them if they have distinct binary encoding! This typically occurs on Asian systems.
What you can be sure is that strcmp() will always differentiate strings that are encoded differently, but the relative order may still use the current locale setting for collation order!

strcspn> <strcmp
Last updated: Fri, 18 Jul 2008
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites