Maison  >  Article  >  développement back-end  >  Comment détecter si une sous-chaîne existe en php

Comment détecter si une sous-chaîne existe en php

青灯夜游
青灯夜游original
2022-10-13 18:42:483670parcourir

4 méthodes : 1. Utilisez stripos() pour trouver la position d'occurrence d'une sous-chaîne, la syntaxe "stripos($str,$find)" 2. Utilisez strripos() pour trouver la position d'occurrence d'une sous-chaîne, la syntaxe "strripos($ str,$find)"; 3. Utilisez strpos() pour trouver la position d'occurrence de la sous-chaîne, la syntaxe "strpos($str,$find)" 4. Utilisez strrpos() pour trouver la position d'occurrence. de la sous-chaîne, la syntaxe "strrpos($ str,$find)".

Comment détecter si une sous-chaîne existe en php

L'environnement d'exploitation de ce didacticiel : système Windows 7, PHP version 8.1, ordinateur DELL G3

Lors de l'exécution d'une opération de recherche de chaîne, vous devez parfois rechercher une sous-chaîne spécifiée (appelée sous-chaîne) dans un certaine chaîne) pour voir si la sous-chaîne existe dans cette chaîne.

Nous utilisons généralement les fonctions intégrées de PHP pour trouver la première ou la dernière occurrence de cette sous-chaîne dans la chaîne afin de porter un jugement. Il existe deux situations pour rechercher des chaînes : l'une est insensible à la casse, c'est-à-dire une recherche insensible à la casse ; l'autre est sensible à la casse, c'est-à-dire une recherche sensible à la casse.

Cas 1 : Déterminer si la sous-chaîne existe (insensible à la casse)

Pour détecter si la sous-chaîne existe sans respecter la casse, vous devez utiliser les fonctions stripos() et strripos().

Les fonctions stripos() et strripos() peuvent vérifier la position d'occurrence de la sous-chaîne spécifiée sans tenir compte de la casse. Si la valeur de retour est FALSE, la sous-chaîne spécifiée n'existe pas.

Nous pouvons donc utiliser le code suivant pour déterminer si la sous-chaîne existe

<?php
header("Content-type:text/html;charset=utf-8");
$string = "ABCDCBAbcd";
$findme = "bC";

if(stripos($string, $findme)!=FALSE){
	echo "子串  “&#39;$findme&#39;” 在字符串  “&#39;$string&#39;” 中存在。";
}else{
	echo "子串  “&#39;$findme&#39;” 在字符串  “&#39;$string&#39;” 中不存在。";
}

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

Résultat de sortie :

Comment détecter si une sous-chaîne existe en php

Explication : fonctions stripos() et strripos()

stripos($string,$ The find,$start) peut trouver la première occurrence d'une chaîne dans une autre chaîne (insensible à la casse). La fonction stripos($string,$find,$start)函数可以查找字符串在另一字符串中第一次出现的位置(不区分大小写)。

strripos($string,$find,$start)函数可以查找字符串在另一字符串中最后一次出现的位置(不区分大小写)。

这两个函数的参数是相似的,都接受两个必需参数$string$find,一个可省略参数$start

  • $string参数:用于指定要被查找的字符串。

  • $find参数:用于指定要查找的子串,可以包含一个或者多字符。(如果不是字符串类型,那么它将被转换为整型并被视为字符顺序值)。

  • $start参数:用于指定从$string 中的哪个字符开始查找,返回的位置数字值仍然相对于 $string 的起始位置。

情况2:检测子串是不是存在(大小写敏感)

大小写敏感的检测子串是不是存在,需要使用strpos()和strrpos()函数。

strpos()和strrpos()函数可以大小写敏感的检查指定子串的出现位置,如果返回值为FALSE,则指定子串不存在。

示例:

<?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; 中不存在。";
}
?>

strpos()和strrpos()函数会区分大小写的在字符串$string中查找子串$findme1或者$findme2。当完全匹配上,存在子串时,会返回子串在字符串的第一次或最后一次的出现位置;如果在字符串的没有找到子串,则返回FALSE

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

Comment détecter si une sous-chaîne existe en php

说明:strpos()和strrpos()函数

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

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

strpos()和strrpos()函数相似,都接受两个必需参数$string(被查找的字符串)和$find(要查找的子串),一个可省略参数$startstrripos($string,$find,$start) peut trouver la dernière occurrence d'une chaîne dans une autre chaîne (insensible à la casse).

Les paramètres de ces deux fonctions sont similaires. Elles acceptent toutes deux deux paramètres obligatoires $string et $find, et un paramètre omis $start. .

  • $string Paramètre : utilisé pour préciser la chaîne à trouver.

  • Comment détecter si une sous-chaîne existe en php$find Paramètre : utilisé pour préciser la sous-chaîne à trouver, qui peut contenir un ou plusieurs caractères. (S'il ne s'agit pas d'un type chaîne, il est converti en entier et traité comme une valeur ordonnée par caractères).
  • Paramètre $start : utilisé pour spécifier à partir de quel caractère de $string commencer la recherche. La valeur numérique de position renvoyée est toujours relative à <. code>La position de départ de $string.

🎜Cas 2 : Détecter si la sous-chaîne existe (sensible à la casse) 🎜🎜🎜🎜Pour détecter si la sous-chaîne existe en respectant la casse, vous devez utiliser les fonctions strpos() et strrpos() . Les fonctions 🎜🎜strpos() et strrpos() peuvent vérifier la position d'occurrence de la sous-chaîne spécifiée en respectant la casse. Si la valeur de retour est FALSE, la sous-chaîne spécifiée n'existe pas. 🎜🎜Exemple : les fonctions 🎜
<?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);
?>
🎜strpos() et strrpos() trouveront la sous-chaîne $findme1 ou $ dans la chaîne <code>$string en respectant la casse 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é. 🎜🎜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 : 🎜🎜Comment détecter si une sous-chaîne existe en php 🎜🎜🎜Description : fonctions strpos() et strrpos()🎜🎜
  • 🎜strpos($string,$find,$start ) La fonction peut renvoyer la position où la sous-chaîne apparaît pour la première fois (sensible à la casse 🎜
  • 🎜strrpos($string,$find,$start)Le la fonction peut renvoyer La position de la dernière occurrence de la sous-chaîne (sensible à la casse) ; 🎜
🎜 Les fonctions strpos() et strrpos() sont similaires et acceptent toutes deux deux paramètres obligatoires $string (La chaîne à trouver) et <code>$find (la sous-chaîne à trouver), et un paramètre facultatif $start (la position de départ de la recherche). 🎜Remarque : la position de la chaîne commence à 0 et non à 1. 🎜🎜rrreee🎜Résultats de sortie : 🎜🎜🎜🎜🎜Apprentissage recommandé : "🎜Tutoriel vidéo PHP🎜"🎜

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