Maison  >  Article  >  développement back-end  >  L'apprentissage des chaînes PHP compte le nombre d'occurrences de caractères

L'apprentissage des chaînes PHP compte le nombre d'occurrences de caractères

青灯夜游
青灯夜游original
2021-08-10 16:10:465006parcourir

Dans l'article précédent, nous avons présenté la méthode insensible à la casse pour remplacer une sous-chaîne donnée par d'autres valeurs. Si vous êtes intéressé, vous pouvez cliquer sur le lien pour lire → "PHP utilise intelligemment des fonctions pour remplacer une sous-chaîne donnée par un *. (majuscules et minuscules) Insensible)》. Cette fois, nous allons présenter comment utiliser PHP pour compter le nombre d'occurrences de caractères dans une chaîne. Vous pouvez vous y référer si nécessaire.

Je crois, étant donné une chaîne "aaabbccqqwweeab", comment compter le nombre d'occurrences de chaque caractère ? Vous pouvez utiliser la boucle

<?php
header("Content-Type: text/html;charset=utf-8");    //设置字符编码
//统计字符串中出现的字符,出现次数
$str = &#39;aaabbccqqwweeab&#39;;//字符串示例
echo "字符串为:".$str.&#39;<br/>&#39;;
$strRecord=array();//把出现过的字符记录在此数组中,如果记录有,则不记录,
for($i=0;$i<strlen($str);$i++){
 $found = 0;//默认设置为没有遇到过
 foreach((array)$strRecord as $k=>$v){
  if($str[$i] == $v[&#39;key&#39;]){
   $strRecord[$k][&#39;count&#39;] += 1;//已经遇到,count + 1;
   $found = 1;//设置已经遇到过的,标记
   continue;//如果已经遇到,不用再循环记录数组了,继续下一个字符串比较
  }
 }
 if(!$found){
  $strRecord[] = array(&#39;key&#39;=>$str[$i],&#39;count&#39;=>1);//记录没有遇到过的字符串
 }
}
echo &#39;<pre class="brush:php;toolbar:false">&#39;;
print_r($strRecord);
?>

pour analyser :

  • bouclez une fois la chaîne $str et enregistrez les caractères qui sont apparus dans le tableau $strRecord (n'enregistrez qu'une seule fois, en cas de répétition, ignorez-la).

  • Parcourez le tableau $strRecord et comparez chaque caractère de la chaîne ($str[$i]) et la valeur du tableau ($strRecord[]['key'] ) à des fins de comparaison ; si une valeur dans l'enregistrement est la même que ce caractère, enregistrez le nombre de fois (<code>$strRecord[]['count']) + 1. $str[$i])和数组的值($strRecord[]['key'])进行比较;如果记录里的某个值和这个字符一样,就记录次数($strRecord[]['count'])+1。

我们来看看输出结果:

Lapprentissage des chaînes PHP compte le nombre doccurrences de caractères

OK,统计出来了!

但有时我们不需要统计全部字符,只需要计算指定的一个字符/子串的出现次数,这样怎么操作?

这也简单,PHP提供了一个内置函数可以解决这个问题。我们来看看下面一个例子:

<?php
header("Content-Type: text/html;charset=utf-8");    //设置字符编码
$str = &#39;aaabbccqqwweeab&#39;;
echo "字符串为:".$str.&#39;<br/><br/>&#39;;

echo "字符串中出现了 ".substr_count($str,&#39;a&#39;)." 次 a字符!";

echo "<br/><br/>字符串中出现了 ".substr_count($str,&#39;ab&#39;)." 次 ab子串!";
?>

分析:我们使用“substr_count($str,'a')”和“substr_count($str,'ab')”语句来统计字符串$str中“a”字符和“ab”字符的出现次数。大家觉得这个会输出什么?是不是应该输出“4”和“2”呀。那么对不对?我们来看一下输出结果:

Lapprentissage des chaînes PHP compte le nombre doccurrences de caractères

正确!“a”字符和“ab”字符的出现次数就是“4”和“2”。

下面我们来了解一下这其中的关键函数substr_count()。

substr_count()函数可以计算子串(由一个或多个字符组成)在字符串中出现的次数(区分大小写)。

substr_count($string,$substring,$start,$length)

Jetons un coup d'œil au résultat :
  • Lapprentissage des chaînes PHP compte le nombre doccurrences de caractères

    OK, les statistiques sont sorties !
  • Mais parfois, nous n'avons pas besoin de compter tous les caractères, nous avons seulement besoin de compter le nombre d'occurrences d'un caractère/sous-chaîne spécifié. Comment faire cela ?

    C'est aussi simple, PHP fournit une fonction intégrée pour résoudre ce problème. Jetons un coup d'œil à l'exemple suivant :
  • <?php
    header("Content-Type: text/html;charset=utf-8");    //设置字符编码
    $str = &#39;aaabbccqqwweeab&#39;;
    echo "字符串为:".$str.&#39;<br/><br/>&#39;;
    
    echo "字符串中出现了 ".substr_count($str,&#39;a&#39;,0,5)." 次 a字符!";
    echo "<br/>字符串中出现了 ".substr_count($str,&#39;a&#39;,2,5)." 次 a字符!";
    echo "<br/><br/>字符串中出现了 ".substr_count($str,&#39;ab&#39;,0,10)." 次 ab子串!";
    echo "<br/>字符串中出现了 ".substr_count($str,&#39;ab&#39;,3)." 次 ab子串!";
    ?>
Analyse : Nous utilisons "substr_count($str,'a')" et "substr_count($str,'ab') code >" pour compter le nombre d'occurrences des caractères "a" et "ab" dans la chaîne $str. Que pensez-vous que cela va produire ? "4" et "2" doivent-ils être émis ? Alors n'est-ce pas ? Jetons un coup d'œil au résultat : <p></p> <img src="https://img.php.cn/upload/image/772/873/472/1628582516539367.png" title="1628582516539367.png" alt="2 . png"><p></p>C'est exact ! Le nombre d'occurrences du caractère « a » et du caractère « ab » est « 4 » et « 2 ». <p><img src="https://img.php.cn/upload/image/917/253/460/162858295983491Lapprentissage%20des%20cha%C3%AEnes%20PHP%20compte%20le%20nombre%20doccurrences%20de%20caract%C3%A8res" title="162858295983491Lapprentissage des chaînes PHP compte le nombre doccurrences de caractères" alt="Lapprentissage des chaînes PHP compte le nombre doccurrences de caractères">Jetons un coup d'œil à la fonction clé substr_count(). </p> <p>La fonction substr_count() peut compter le nombre de fois qu'une sous-chaîne (constituée d'un ou plusieurs caractères) apparaît dans une chaîne (sensible à la casse). <a href="https://www.php.cn/course/list/29.html" target="_blank"></a><code>substr_count($string,$substring,$start,$length)La fonction accepte 2 paramètres obligatoires $string et $substring, et 2 paramètres omis $start et $length.

Nous connaissons déjà les deux premiers paramètres requis grâce à l'exemple de code ci-dessus. Jetons un coup d'œil aux deux paramètres omis $start et $length.

🎜$start : Utilisé pour préciser où commencer la recherche des sous-chaînes dans la chaîne 🎜🎜🎜🎜$length : Utilisé pour préciser la longueur de la recherche 🎜🎜🎜🎜 En fonction des valeurs fixées par les paramètres $start et $length, substr_count La valeur renvoyée par la fonction () est également différente. 🎜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 vous 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