PHP - strncmp
Třída
Metoda - strncmp
(PHP 4, PHP 5, PHP 7)
Funkce strncmp()
porovnává dva textové řetězce do uvedené
délky. Funkce je tzv. case sensitive
- záleží na velkých a
malých písmenech. Funkce je binary safe.
První dva parametry musí být textové řetězce - v opačném případě může funkce vracet nesmyslné výsledky.
Procedurální
- function strncmp (string $str1, string $str2, int $len) : int
Parametry
Název | Datový typ | Výchozí hodnota | Popis |
---|---|---|---|
$str1 | string | První řetězec k porovnání. | |
$str2 | string | Druhý řetězec k porovnání. | |
$len | int | Počet znaků, které se mají v obou řetězcích kontrolovat. |
Návratové hodnoty
Vrací: int
Vrací 0
, jestliže se oba textové řetězce do dané délky
rovnají, nebo jestliže je poslední parametr roven 0
. Pokud je
první řetězec větší než ten druhý, vrací kladné číslo, v opačném
případě vrací záporné číslo.
Výsledkem může být též null
, pokud je jeden z prvních
dvou parametrů objekt/pole, nebo false
, pokud je poslední
parametr menší než 0
.
Příklady
Zkusme si nejdříve porovnat textové řetězce a všimněte si rozdílu mezi velkými a malými písmeny:
<?php
var_dump(strncmp('ahoj', 'ahoj světe', 4)); // int(0)
var_dump(strncmp('ahoj', 'ahoj světe', -1)); // Vyvolá warning a vrátí FALSE
var_dump(strncmp('rozdílné', 'řetězce', 0)); // int(0)
var_dump(strncmp('Ahoj Světe', 'ahoj světe', 4)); // int(-32)
var_dump(strncmp('světe', 'ahoj světe', 5)); // int(18)
var_dump(strncmp('ahoj světe', 'ahoj světe', 10)); // int(0)
var_dump(strncmp('ahoj světe', 'ahoj světe', 27)); // int(0)
Můžeme též vidět, že pokud je délka nastavena na delší, než je délka textových řetězců, výsledek již bude stejný.
Nyní zkusme do parametrů vložit i jiné hodnoty, než jsou textové řetězce:
<?php
var_dump(strncmp(false, 'ahoj svete', 1)); // int(-1)
var_dump(strncmp(false, 'ahoj svete', 10)); // int(-10)
var_dump(strncmp(array('ahoj', 'svete'), 'ahoj svete', 4)); // Vyvolá warning a vrátí FALSE
var_dump(strncmp(100, 300, 1)); // int(-2)
var_dump(strncmp(100, 300, 5)); // int(-2)
Můžeme vidět, že v některých případech jsou výsledky dosti náhodné.
Nakonec se podívejme i na porovnávání textových řetězců s diakritikou, na které též záleží:
<?php
var_dump(strncmp('ahoj světe', 'ahoj svete', 10)); // int(95)
var_dump(strncmp('ahoj světe', 'ahoj svete', 5)); // int(0)
Související manuály
- function preg_match (string $pattern, string $subject, array &$matches, int $flags = 0, int $offset = 0) : int
- function strcmp (string $str1, string $str2) : int
- function strstr (string $haystack, mixed $needle, bool $before_needle = false) : string
- function substr (string $string, int $start, int $length) : string