NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

PHP - strncmp

Třída

Kořen \ Bez třídy

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ázevDatový typVýchozí hodnotaPopis
$str1string

První řetězec k porovnání.

$str2string

Druhý řetězec k porovnání.

$lenint

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
      Aktivity