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

search for in the

strcspn> <strcmp
[edit] Last updated: Fri, 18 Sep 2009

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

Вторият низ.

Връщани стойности

Връща < 0 ако str1 е по-малък от str2 ; > 0 ако str1 е по-голям от str2 , и 0 if ако са равни.

Дневник на промените

Версия Описание
4.2.3 Функцията работи и под win32.

Вж. също

  • preg_match() - Perform a regular expression match
  • strcmp() - Двоично сигурно сравняване на низове
  • strcasecmp() - Сравнява низове, нечувствително към регистъра и двоично сигурно
  • substr() - Връща част от низ
  • stristr() - Нечувствителен към регистъра вариант на функция strstr
  • strncasecmp() - Сравнява първите n знака на низ, нечувствително към регистъра и двоично сигурно
  • strncmp() - Сравнява първите n знака двоично сигурно
  • strstr() - Връща първата поява на низ
  • setlocale() - Установява локал



add a note add a note User Contributed Notes strcoll - [2 notes]
up
1
sakkarinlaohawisut15 at hotmail dot com
10 years ago
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
 )
up
1
Anonymous
10 years ago
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!

 
show source | credits | sitemap | contact | advertising | mirror sites