Position actuelle: Accueil> Derniers articles> Misonnées et solutions courantes lors de l'utilisation de la fonction COUNT_CHARS pour compter la fréquence des caractères

Misonnées et solutions courantes lors de l'utilisation de la fonction COUNT_CHARS pour compter la fréquence des caractères

gitbox 2025-06-15

En PHP, la fonction count_chars est un outil très pratique pour compter la fréquence des caractères dans les chaînes. Il peut renvoyer la valeur ASCII de tous les caractères dans une chaîne et ses temps d'occurrence, ce qui nous permet de réaliser diverses analyses de caractères. Cependant, de nombreux développeurs sont enclins à tomber dans certains malentendus lors de l'utilisation du comte_chars , entraînant des résultats statistiques inexacts ou un code inefficace. Cet article présentera ces malentendus communs en détail et fournira des solutions correspondantes.


1. Idé conception fausse 1: ignorer le rôle des paramètres

La syntaxe de la fonction count_chars est la suivante:

 count_chars(string $string, int $mode = 0): array|string
  • $ String est la chaîne à compter.

  • Le mode $ est le mode qui renvoie le résultat, avec une plage de valeur de 0 à 4, et différents modes renvoient différents types de données.

De nombreux novices utilisent le mode 0 par défaut, mais ne savent pas que le mode est différent, et le type de valeur de retour et le contenu sont également différents. Par exemple:

 <?php
$str = "hello world";
$result = count_chars($str, 0);
print_r($result);
?>

Cela renvoie un tableau avec les clés comme code ASCII de caractères et la valeur est le nombre de caractères.

Mais si vous l'utilisez en abondance comme modèle 1 ou 2, le contenu du tableau renvoyé sera différent:

  • Le mode 1 renvoie les caractères qui sont apparus dans la chaîne et le nombre d'occurrences

  • Le mode 2 renvoie les caractères qui n'apparaissent pas dans la chaîne et le nombre d'occurrences (0)

Si ceux-ci sont confus, cela peut entraîner des erreurs statistiques.


2. Misonctant 2: Utilisez directement le code ASCII pour ignorer la lisibilité du caractère

La clé de tableau renvoyée par le comte_chars est le code ASCII, qui n'est pas pratique à lire et à déboguer. De nombreuses personnes utilisent directement des clés numériques pour traiter le code, ce qui rend le code difficile à comprendre.

Une meilleure façon consiste à convertir le code ASCII en caractères:

 <?php
$str = "hello world";
$chars = count_chars($str, 1);
foreach ($chars as $ascii => $count) {
    echo chr($ascii) . " Apparu $count De premier ordre\n";
}
?>

Cette sortie est plus intuitive et facilite la compréhension des résultats statistiques.


3. Idée fausse 3: L'encodage des personnages n'est pas considéré

Count_chars est basé sur des statistiques de caractères à un octet et n'est pas géré correctement pour les encodages multi-octets (tels que UTF-8).

Si la chaîne contient des symboles chinois, spéciaux, etc., le comte_chars comptera chaque octet séparément, ce qui entraînera une erreur dans le résultat.

Solution :

Pour les chaînes multi-octets, vous pouvez utiliser MB_Strlen combiné avec des statistiques caractéristiques MB_SUBSTR par caractères, ou utiliser d'autres fonctions qui prennent en charge les multi-octets.

Exemple:

 <?php
$str = "Bonjour,monde";
$chars = [];
$len = mb_strlen($str, 'UTF-8');
for ($i = 0; $i < $len; $i++) {
    $char = mb_substr($str, $i, 1, 'UTF-8');
    if (isset($chars[$char])) {
        $chars[$char]++;
    } else {
        $chars[$char] = 1;
    }
}
foreach ($chars as $char => $count) {
    echo "$char Apparu $count De premier ordre\n";
}
?>

4. Misonctant 4: Les résultats du traitement ne sont pas formatés

Le résultat de sortie du count_chars est imprimé directement à l'aide d'un tableau, qui est souvent gênant à afficher ou à exporter. Vous pouvez combiner la sortie formatée, comme la conversion en JSON ou la génération de rapports amicaux.

 <?php
$str = "hello world";
$chars = count_chars($str, 1);
$result = [];
foreach ($chars as $ascii => $count) {
    $result[chr($ascii)] = $count;
}
echo json_encode($result, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
?>

Cela facilite le traitement ultérieur des systèmes frontaux ou d'autres systèmes.


5. Misonctant 5: L'utilisation abusive des URL conduit à des erreurs de statistique

Certains scénarios compteront la fréquence des caractères dans l'URL, mais l'URL contient des symboles spéciaux tels que / , ? , &, etc., et les statistiques directes peuvent être dénuées de sens ou déroutantes.

Suggestion : analyser ou nettoyer l'URL à l'avance et ne compter que les pièces utiles.

Par exemple:

 <?php
$url = "https://gitbox.net/path?param=value&other=123";
$parsed = parse_url($url);
$path = $parsed['path'] ?? '';
$query = $parsed['query'] ?? '';

$combined = $path . $query;
$chars = count_chars($combined, 1);
foreach ($chars as $ascii => $count) {
    echo chr($ascii) . " Apparu $count De premier ordre\n";
}
?>

Cela évite les statistiques répétées sur les noms de domaine et les protocoles, et peut également être analysé séparément pour les chemins et les paramètres.


Résumer

Count_chars est une fonction de statistiques de fréquence de caractère puissante et concise en PHP, mais les malentendus ci-dessus doivent être évités:

  • Identifiez le but des paramètres de mode

  • Convertir le code ASCII en caractères lisibles

  • Faites attention aux problèmes d'encodage multi-octets

  • Résultats de sortie du format

  • Chaînes d'URL prétraitées pour éviter les statistiques dénuées de sens

La maîtrise de ces compétences peut rendre les statistiques de votre personnage plus précises et efficaces.


 <?php
// Exemples complets:统计字符串中每个字符出现的De premier ordre数,Et imprimer
$str = "Hello gitbox.net!";
$chars = count_chars($str, 1);
foreach ($chars as $ascii => $count) {
    echo chr($ascii) . " Apparu $count De premier ordre\n";
}
?>