Maison  >  Article  >  développement back-end  >  PHP comment obtenir la longueur de la sous-chaîne de départ qui ne correspond pas au masque

PHP comment obtenir la longueur de la sous-chaîne de départ qui ne correspond pas au masque

王林
王林avant
2024-03-19 12:04:19427parcourir

L'éditeur PHP Banana vous présentera comment obtenir la longueur de la sous-chaîne de départ du masque qui ne correspond pas. En PHP, vous pouvez utiliser la fonction preg_match combinée avec des expressions régulières pour réaliser cette fonction. Tout d'abord, utilisez une expression régulière pour faire correspondre les caractères indésirables, puis obtenez la position correspondante via la fonction preg_match et enfin calculez la longueur de la sous-chaîne de départ. Cela facilite la mise en œuvre de la fonction d'obtention de la longueur de sous-chaîne de départ d'un masque qui ne correspond pas.

Question : Comment obtenir la longueur de la sous-chaîne de départ du masque qui ne correspond pas en PHP

Solution :

Utilisez la fonction preg_match(), qui renvoie la longueur de la sous-chaîne qui correspond à laregex preg_match() 函数,它返回匹配正则表达式的子字符串的长度。通过使用否定前瞻断言 (?!). En utilisant une assertion d'anticipation négative (?!), vous pouvez faire correspondre les sous-chaînes qui ne correspondent pas au masque spécifié.

Exemple de code :

$subject = "This is a test string";
$mask = "/(t.*)/";

$pattern = "/^(?:(?!$mask).)*$/";

preg_match($pattern, $subject, $matches);

$length = strlen($matches[0]);

Explication :

  • preg_match() 函数检查给定字符串 $subject 是否与正则表达式 $pattern Correspondance.
  • $pattern Expression régulière :
    • ^ : Ancrez le début de la chaîne.
    • (?:...)* : fait correspondre zéro ou plusieurs occurrences de tout caractère qui ne correspond pas au sous-modèle (...).
    • (?!$mask):否定前瞻断言,确保不匹配 $mask.
    • $ : Ancrez le bout de la ficelle.
  • $matches Tableau $matches 数组包含匹配项,其中 $matches[0] contenant des correspondances, où $matches[0] est la sous-chaîne de départ du masque qui ne correspond pas.
  • strlen($matches[0]) Renvoie la longueur de la sous-chaîne.

Notes supplémentaires :

  • Assurez-vous que l'expression régulière du masque $mask est valide.
  • Les assertions anticipées négatives sont moins efficaces et ne sont pas recommandées pour les chaînes plus longues.
  • Envisagez d'utiliser la fonction strspn() comme alternative, qui compte le nombre de caractères jusqu'à ce que le premier caractère correspondant soit trouvé.

Exemple de code complet utilisant strspn() :

$subject = "This is a test string";
$mask = "t";

$length = strspn($subject, $mask, 0, strlen($subject) - 1);

Avantages :

  • strspn() Plus efficace pour les cordes longues.
  • Le code est plus concis.

Inconvénients :

  • Les expressions régulières de masquage complexes ne sont pas prises en charge.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer