PHP.mk документација

strcoll

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.strcoll.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.strcoll.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
strcoll

Референца за `function.strcoll.php` со подобрена типографија и навигација.

function.strcoll.php

strcoll

(PHP 4 >= 4.0.5, PHP 5, PHP 7, PHP 8)

strcollЛокално базирано споредување на низи

= NULL

strcoll(string $string1, string $string2): int

Имајте предвид дека ова споредување е чувствително на големи и мали букви, и за разлика од strcmp() оваа функција не е бинарно безбедна.

strcoll() ја користи тековната локализација за вршење на споредбите. Ако тековната локализација е C или POSIX, оваа функција е еквивалентна на strcmp().

Параметри

string1

Првата низа.

string2

Втората низа.

Вратени вредности

Враќа < 0 ако string1 е помала од string2; > 0 ако string1 е поголемо од string2, и 0 ако се еднакви.

Види Исто така

  • preg_match() - Изврши совпаѓање со регуларен израз
  • strcmp() - Бинарно безбедно споредување на низи
  • strcasecmp() - Бинарно безбедно споредување на низи што не е чувствително на големи и мали букви
  • substr() - Врати дел од низа
  • stristr() - strstr што не прави разлика помеѓу големи и мали букви
  • strncasecmp() - Бинарно безбедно споредување на првите n знаци без разлика на големи и мали букви
  • strncmp() - Бинарно безбедно споредување на првите n карактери
  • strstr() - Најди ја првата појава на низа
  • setlocale() - Постави информации за локал

Белешки од корисници 3 белешки

Анонимен
пред 23 години
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!
mkroese на eljakim dot nl
пред 6 години
You should not rely on this function to properly compare localized strings.

<?php
$a = "Österreich";
$b = "Oesterreich";
$z = "Zeta";

echo setlocale(LC_ALL, 0) . PHP_EOL; // (on my mac: C/en_US.UTF-8/C/C/C/C)
echo strcoll($a, $b) . PHP_EOL; // 116
echo strcoll($b, $a) . PHP_EOL; // -116
echo strcoll($a, $z) . PHP_EOL; // 105

echo setlocale(LC_ALL, "de_DE") . PHP_EOL; // de_DE
echo strcoll($a, $b) . PHP_EOL; // 135
echo strcoll($b, $a) . PHP_EOL; // -135
echo strcoll($a, $z) . PHP_EOL; // 124

$collator = new Collator("de_DE");
echo $collator->compare($a, $b); // 1
echo $collator->compare($b, $a); // -1
echo $collator->compare($a, $z); // -1
?>

Using the Collator (from the intl module) you will get the expected result for e.g. sorting such that the string "Österreich" will rank higher than "Zeta", but after "Oesterreich".

strcoll's output will differ per platform, locale and used c library, while the Collator will give more stable results on different platforms.
(PHP 4 >= 4.0.5, PHP 5, PHP 7, PHP 8)
пред 23 години
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
 )
Навигација

Прелистувај сродни теми и функции.

На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.