Maison  >  Article  >  développement back-end  >  L'apprentissage des chaînes PHP détecte si une sous-chaîne existe (sensible à la casse)

L'apprentissage des chaînes PHP détecte si une sous-chaîne existe (sensible à la casse)

青灯夜游
青灯夜游original
2021-08-05 14:32:322851parcourir

Dans l'article précédent, nous avons présenté une méthode pour détecter si une sous-chaîne existe. Si vous êtes intéressé, vous pouvez cliquer sur le lien pour voir → "Apprentissage des chaînes PHP : Déterminer si une sous-chaîne existe (insensible à la casse)". Cette fois, nous vous présentons une autre méthode pour détecter si une sous-chaîne existe. Vous pouvez vous y référer si vous en avez besoin.

Dans l'article précédent, nous avons introduit l'utilisation des fonctions stripos() et strripos() pour déterminer si une sous-chaîne existe en fonction de la première ou de la dernière occurrence de la sous-chaîne, mais ces deux fonctions ne sont pas sensibles à la casse, la recherche. sera effectué sans tenir compte de la casse.

Parfois, lorsque nous avons besoin d'un positionnement précis et d'une détection stricte, nous devons effectuer une recherche en tenant compte de la casse. Aujourd'hui, nous le découvrirons.

Jetons un œil à l'exemple suivant

<?php
header("Content-type:text/html;charset=utf-8");
$string = "ABCDCBAbcd";
$findme1 = "bC";
$findme2 = "bc";
$pos1 = strpos($string, $findme1);
$pos2 = strrpos($string, $findme1);
$pos3 = strpos($string, $findme2);
$pos4 = strrpos($string, $findme2);

if($pos1 !=FALSE){
	echo "子串 &#39;$findme1&#39; 在字符串  &#39;$string&#39; 中存在。";
}else{
	echo "子串  &#39;$findme1&#39; 在字符串  &#39;$string&#39; 中不存在。";
}

if($pos2 !=FALSE){
	echo "<br>子串  &#39;$findme1&#39; 在字符串  &#39;$string&#39; 中存在。";
}else{
	echo "<br>子串  &#39;$findme1&#39; 在字符串  &#39;$string&#39; 中不存在。";
}
if($pos3 !=FALSE){
	echo "<br>子串  &#39;$findme2&#39; 在字符串  &#39;$string&#39; 中存在。";
}else{
	echo "<br>子串  &#39;$findme2&#39; 在字符串  &#39;$string&#39; 中不存在。";
}

if($pos4 !=FALSE){
	echo "<br>子串  &#39;$findme2&#39; 在字符串  &#39;$string&#39; 中存在。";
}else{
	echo "<br>子串  &#39;$findme2&#39; 在字符串  &#39;$string&#39; 中不存在。";
}
?>

Les fonctions strpos() et strrpos() trouveront la sous-chaîne $findme1 dans la chaîne $string dans un cas- de manière sensible Ou $findme2. Lorsqu'il y a une correspondance exacte et qu'une sous-chaîne existe, la première ou la dernière occurrence de la sous-chaîne dans la chaîne sera renvoyée ; si la sous-chaîne n'est pas trouvée dans la chaîne, FALSE sera renvoyé. $string中查找子串$findme1或者$findme2。当完全匹配上,存在子串时,会返回子串在字符串的第一次或最后一次的出现位置;如果在字符串的没有找到子串,则返回FALSE

从上面的例子可以看出,只有子串"bc"和字符串“ABCDCBAbcd”是完全匹配,子串"bc"被认为是存在于字符串“ABCDCBAbcd”中的。因此输出结果为:

Lapprentissage des chaînes PHP détecte si une sous-chaîne existe (sensible à la casse)

下面我们来详细了解一下strpos()和strrpos()函数。

  • strpos($string,$find,$start)函数可以返回子字符串首次出现的位置(区分大小写);

  • strrpos($string,$find,$start)函数可以返回子字符串最后一次出现的位置(区分大小写);

strpos()和strrpos()函数相似,都接受两个必需参数$string(被查找的字符串)和$find(要查找的子串),一个可省略参数$start(查找的开始位置)。注:字符串位置起始于 0,而不是 1。

<?php
header("Content-type:text/html;charset=utf-8");
$string = "ABCabcabcABC";
$findme1 = "c";
$findme2 = "C";
echo "子串  &#39;$findme1&#39; 第一次出现的位置:".strpos($string, $findme1);
echo "<br>子串  &#39;$findme1&#39; 最后一次出现的位置:".strrpos($string, $findme1);
echo "<br>子串  &#39;$findme2&#39; 第一次出现的位置:".strpos($string, $findme2);
echo "<br>子串  &#39;$findme2&#39; 最后一次出现的位置:".strrpos($string, $findme2);
?>

输出结果:

Lapprentissage des chaînes PHP détecte si une sous-chaîne existe (sensible à la casse)

但strrpos()函数的参数$start

Comme le montre l'exemple ci-dessus, seules la sous-chaîne "bc" et la chaîne "ABCDCBAbcd" correspondent complètement, et la sous-chaîne "bc" >" est considéré comme présent dans la chaîne "<code>ABCDCBAbcd". Le résultat de sortie est donc :

Lapprentissage des chaînes PHP détecte si une sous-chaîne existe (sensible à la casse)

Lapprentissage des chaînes PHP détecte si une sous-chaîne existe (sensible à la casse)Regardons de plus près les fonctions strpos() et strrpos().

La fonction
  • strpos($string,$find,$start) peut renvoyer la position où la sous-chaîne apparaît pour la première fois (différencier majuscules et minuscules)

  • strrpos($string,$find,$start) peut renvoyer la position de la dernière occurrence d'une sous-chaîne (sensible à la casse) ;

Les fonctions strpos() et strrpos() sont similaires, toutes deux acceptent deux paramètres requis $string (la chaîne recherchée) et $find (la sous-chaîne à rechercher), un paramètre optionnel $start (la position de départ de la recherche). Remarque : les positions des chaînes commencent à 0 et non à 1.

<?php
header("Content-type:text/html;charset=utf-8");
$string = "ABCabcabcABC";
$findme1 = "c";
$findme2 = "C";
echo "子串  &#39;$findme1&#39; 第一次出现的位置:".strpos($string, $findme1);
echo "<br>子串  &#39;$findme1&#39; 最后一次出现的位置:".strrpos($string, $findme1,-5);
echo "<br>子串  &#39;$findme2&#39; 第一次出现的位置:".strpos($string, $findme2);
echo "<br>子串  &#39;$findme2&#39; 最后一次出现的位置:".strrpos($string, $findme2,-5);
?>
Résultat de sortie :

🎜Lapprentissage des chaînes PHP détecte si une sous-chaîne existe (sensible à la casse)🎜🎜Mais le paramètre $start de la fonction strrpos() peut accepter des valeurs négatives. Lorsqu'il s'agit d'un nombre négatif, la recherche démarrera à la position de comptage. à la fin de la chaîne. 🎜rrreee🎜Résultat de sortie : 🎜🎜🎜🎜🎜D'accord, c'est tout si vous voulez savoir autre chose, vous pouvez cliquer ici. → →🎜Tutoriel vidéo php🎜🎜🎜 Enfin, je recommande de lire un cours classique "🎜PHP String Processing (Jade Girl Heart Sutra Edition)🎜", c'est gratuit~ venez apprendre ! 🎜

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn