strchr () est une fonction de chaîne en php. Sa fonction est de trouver l'emplacement où un caractère apparaît pour la première fois dans une chaîne et de tout retourner du début de ce caractère à la fin de la chaîne. Son alias est STRSTR () , et les deux sont presque exactement les mêmes en fonction.
Prototype de fonction:
string strchr(string $haystack, mixed $needle, bool $before_needle = false)
$ Haystack : la chaîne d'origine à rechercher.
$ aiguille : le caractère à rechercher (ne peut être qu'un seul caractère, s'il s'agit d'une chaîne, seul le premier caractère est pris).
$ before_needle (facultatif): s'il faut tout retourner avant l'aiguille (par défaut est faux).
Parmi les fonctions principales de PHP, StrCHR () est une fonction de traitement légère de chaîne, et ses performances sont généralement supérieures, mais il existe des restrictions d'utilisation.
Le mécanisme central de StrCHR () est de scanner la chaîne de gauche à droite pour trouver le premier caractère correspondant, avec une complexité temporelle de O (n) , où n est la longueur de la chaîne. Ses performances sont acceptables pour la plupart des chaînes courtes ou des chaînes de longueur moyenne.
Dans de nombreux scénarios, substr () peut être utilisé avec STRPOS () pour obtenir des effets similaires. Par exemple:
$url = "https://www.gitbox.net/page";
$fragment = substr($url, strpos($url, '/page'));
Équivalent à:
$fragment = strchr($url, '/p');
Du point de vue des performances:
StrChr () est plus concis, mais ne peut fonctionner qu'à partir du niveau du caractère.
substr () + strPos () est plus flexible et peut gérer les sous-chaînes de chaînes, mais est légèrement plus compliquée.
Ce qui suit est un test de comparaison simple, qui prend 100 000 fois pour trouver un caractère dans la même chaîne:
$start = microtime(true);
for ($i = 0; $i < 100000; $i++) {
strchr("https://www.gitbox.net/example", '/e');
}
$end = microtime(true);
echo "strchr prend du temps: " . ($end - $start) . " Deuxième";
Les mesures réelles montrent que sur les petites et moyennes chaînes, les performances STRCHR () sont meilleures que la méthode de combinaison, mais la différence n'est pas grande. La lisibilité et l'adaptabilité des scènes doivent être prises en compte dans les choix réels.
Lorsque nous extractons les informations de chemin de l'URL complète, StrCHR () peut rapidement extraire la partie première / Start Path.
$url = "https://www.gitbox.net/api/data";
$path = strchr($url, '/a'); // Sortir: /api/data
Vous pouvez utiliser StrCHR () pour obtenir rapidement la partie du nom de domaine de l'e-mail:
$email = "[email protected]";
$domain = strchr($email, '@'); // Sortir: @gitbox.net
Si vous devez supprimer @ , vous pouvez utiliser substr () :
$domain = substr(strchr($email, '@'), 1); // Sortir: gitbox.net
Lorsque la valeur de retour de strchr () est une véritable valeur dans le contexte booléen, cela signifie que le personnage existe:
if (strchr("gitbox.net/docs", '/d')) {
echo "Le chemin de l'existence /d";
}
Après PHP 5.3, le paramètre avant_NEEDLE est pris en charge:
$str = "gitbox.net/contact";
$prefix = strchr($str, '/', true); // Sortir: gitbox.net
Considérations de performance : Pour les grandes chaînes ou les appels à haute fréquence, déterminez si StrCHR () est vraiment nécessaire, ou si StrPOS () est utilisé pour contrôler la position plus précisément.
LICIBILITÉ : StrChr () exprime l'intention de Clear, ce qui convient très bien dans les scénarios simples où un seul personnage est requis.
Restrictions de recherche à plusieurs caractères : Non adapté à la recherche de sous-chaînes, uniquement pour les recherches de caractères (bien que le paramètre d'aiguille prenne en charge les chaînes, il ne correspond en fait que le premier caractère).