substr_compare

(PHP 5, PHP 7, PHP 8)

substr_compareComparar dos strings desde un offset hasta una longitud en caracteres

Descripción

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

substr_compare() compara haystack desde la posición offset con needle durante length caracteres.

Parámetros

haystack

El string principal a comparar.

needle

El string secundario a comparar.

offset

La posición de inicio para la comparación. Si es un valor negativo, se comienza a contar desde el final del string.

length

La longitud de la comparación. El valor por omisión es el máximo entre la longitud de needle y la longitud de haystack menos el parámetro offset.

case_insensitive

Si case_insensitive vale true, la comparación no distingue entre mayúsculas y minúsculas.

Valores devueltos

Devuelve un valor inferior a 0 si string1 es inferior a string2; un valor superior a 0 si string1 es superior a string2, y 0 si son iguales. No se puede deducir ningún significado particular de este valor, excepto su signo.

Si length es igual (anterior a PHP 7.2.18, 7.3.5) o mayor que el tamaño de haystack o que length está definido y es inferior a 0, substr_compare() muestra una alerta y retorna false.

Historial de cambios

Versión Descripción
8.2.0 Esta función ya no garantiza retornar strlen($string1) - strlen($string2) cuando las longitudes de las strings no son iguales, y puede retornar -1 o 1 en su lugar.
8.0.0 length ahora es nullable.
7.2.18, 7.3.5 offset ahora puede ser igual al tamaño de haystack.

Ejemplos

Ejemplo #1 Ejemplo con 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; // -1
?>

Ver también

  • strncmp() - Comparación binaria de los n primeros caracteres