PHP String Functions

Vérification efficace des sous-chaînes de début en PHP

Spread the love

PHP fournit plusieurs méthodes efficaces pour déterminer si une chaîne commence par une sous-chaîne spécifique. Cet article explorera trois approches courantes : l’utilisation des fonctions substr(), strpos() et strncmp(). Chaque méthode présente des forces et des faiblesses, la rendant adaptée à différents scénarios.

Table des matières

Utiliser substr() pour vérifier une sous-chaîne de début

La fonction substr() extrait une partie d’une chaîne. Nous pouvons l’utiliser pour vérifier si le début d’une chaîne correspond à notre sous-chaîne cible. Cette approche est simple et facile à comprendre.


<?php

function startsWithSubstr(string $haystack, string $needle): bool {
  return substr($haystack, 0, strlen($needle)) === $needle;
}

$string = "Ceci est une chaîne de test.";
$substring = "Ceci";

if (startsWithSubstr($string, $substring)) {
  echo "'$string' commence par '$substring'n";
} else {
  echo "'$string' ne commence pas par '$substring'n";
}

$string2 = "Une autre chaîne de test.";
$substring2 = "Test";

if (startsWithSubstr($string2, $substring2)) {
  echo "'$string2' commence par '$substring2'n";
} else {
  echo "'$string2' ne commence pas par '$substring2'n";
}

?>

Ce code extrait la partie de $haystack ayant la longueur de $needle, en commençant à l’index 0. Il effectue ensuite une comparaison stricte (===) pour s’assurer que le type et la valeur correspondent. Cette méthode est efficace pour les sous-chaînes courtes.

Utiliser strpos() pour vérifier une sous-chaîne de début

La fonction strpos() trouve la position de la première occurrence d’une sous-chaîne. Si la sous-chaîne est au début, sa position sera 0.


<?php

function startsWithPos(string $haystack, string $needle): bool {
  //strpos retourne false si needle n'est pas trouvé, donc on utilise !== au lieu de !=
  return strpos($haystack, $needle) === 0;
}

$string = "Ceci est une chaîne de test.";
$substring = "Ceci";

if (startsWithPos($string, $substring)) {
  echo "'$string' commence par '$substring'n";
} else {
  echo "'$string' ne commence pas par '$substring'n";
}

$string2 = "Une autre chaîne de test.";
$substring2 = "Test";

if (startsWithPos($string2, $substring2)) {
  echo "'$string2' commence par '$substring2'n";
} else {
  echo "'$string2' ne commence pas par '$substring2'n";
}

?>

Il s’agit d’une méthode concise et fréquemment utilisée. Une comparaison stricte (=== 0) est cruciale car strpos() renvoie false si l’aiguille n’est pas trouvée.

Utiliser strncmp() pour vérifier une sous-chaîne de début

La fonction strncmp() compare des parties de deux chaînes. Elle est particulièrement utile pour les comparaisons sensibles à la casse ou lorsqu’on ne vérifie qu’un nombre spécifique de caractères.


<?php

function startsWithStrncmp(string $haystack, string $needle): bool {
  return strncmp($haystack, $needle, strlen($needle)) === 0;
}

$string = "Ceci est une chaîne de test.";
$substring = "Ceci";

if (startsWithStrncmp($string, $substring)) {
  echo "'$string' commence par '$substring'n";
} else {
  echo "'$string' ne commence pas par '$substring'n";
}

$string2 = "Une autre chaîne de test.";
$substring2 = "Test";

if (startsWithStrncmp($string2, $substring2)) {
  echo "'$string2' commence par '$substring2'n";
} else {
  echo "'$string2' ne commence pas par '$substring2'n";
}

?>

strncmp() compare les premiers strlen($needle) caractères de $haystack avec $needle. Une valeur de retour de 0 signifie qu’ils sont identiques. Cette fonction est efficace et offre plus de contrôle.

Choisir la bonne méthode

Pour la simplicité et la lisibilité avec des sous-chaînes plus courtes, substr() est un bon choix. strpos() fournit une solution concise et efficace pour la plupart des cas. strncmp() offre plus de flexibilité, en particulier pour les comparaisons sensibles à la casse ou lorsqu’on limite la comparaison à un certain nombre de caractères. Pour les très grandes chaînes, elle pourrait offrir un léger avantage en termes de performances, mais pour la plupart des cas d’utilisation courants, strpos() est généralement suffisant.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *