# substr_compare

(PHP 5, PHP 7, PHP 8)

substr_compare — Compare deux chaînes depuis un offset jusqu'à une longueur en caractères

### Description

substr_compare(
string `$haystack`,
string `$needle`,
int `$offset`,
?int `$length` = `null`,
bool `$case_insensitive` = `false`
): int

substr_compare() compare `haystack` à partir de la position `offset` avec `needle` pendant `length` caractères.

### Liste de paramètres

`haystack`

  La chaîne principale à comparer.

`needle`

  La chaîne secondaire à comparer.

`offset`

  La position de départ pour la comparaison. Si c'est une valeur négative, on commence à compter à partir de la fin de la chaîne.

`length`

  La longueur de la comparaison. La valeur par défaut est le maximum entre la longueur de `needle` et la longueur de `haystack` moins le paramètre `offset`.

`case_insensitive`

  Si `case_insensitive` vaut `true`, la comparaison est insensible à la casse.

### Valeurs de retour

Retourne une valeur inférieure à 0 si `string1` est inférieure à `string2` ; une valeur supérieure à 0 si `string1` est supérieure à `string2`, et `0` si elles sont égales. Aucune signification particulière ne peut être déduite de cette valeur, hormis son signe.

Si `length` est égal (antérieur à PJP 7.2.18, 7.3.5) ou plus grand que la taille de `haystack` ou que `length` est définit et inférieur à 0, substr_compare() affiche une alerte et retourne `false`.

### Historique

Version | Description
--- | ---
8.2.0 | Cette fonction ne garantit plus de retourner `strlen($string1) - strlen($string2)` lorsque les longueurs des chaînes ne sont pas égales, et peut désormais retourner `-1` ou `1` à la place.
8.0.0 | `length` est désormais nullable.
7.2.18, 7.3.5 | `offset` peut désormais être égal à la taille de `haystack`.

### Exemples

Exemple #1 Exemple avec substr_compare()

`<?php
echo substr_compare("abcde", "bc", 1, 2), PHP_EOL; // 0
echo substr_compare("abcde", "de", -2, 2), PHP_EOL; // 0
echo substr_compare("abcde", "bcg", 1, 2), PHP_EOL; // 0
echo substr_compare("abcde", "BC", 1, 2, true), PHP_EOL; // 0
echo substr_compare("abcde", "bc", 1, 3), PHP_EOL; // 1
echo substr_compare("abcde", "cd", 1, 2), PHP_EOL; // -1
echo substr_compare("abcde", "abc", 5, 1), PHP_EOL; // -1g
?>`

### Voir aussi

- strncmp() - Comparaison binaire des n premiers caractères