Position actuelle: Accueil> Derniers articles> Créer des filtres personnalisés à l'aide de stripos et de fonctions de rappel

Créer des filtres personnalisés à l'aide de stripos et de fonctions de rappel

M66 2025-05-31

Dans le développement quotidien Web, nous rencontrons souvent la nécessité de "filtrer" le contenu entré par les utilisateurs. Surtout lorsque vous traitez des commentaires, des publications du forum et d'autres scénarios, afin d'éviter la propagation de mots sensibles, de liens publicitaires ou de discours incorrects, il est particulièrement important de créer un "filtre personnalisé".

Dans cet article, nous utiliserons la fonction StripOS () et la fonction de rappel dans PHP pour créer un filtre de mot sensible simple mais très pratique. L'idée est claire et claire, et même les débutants peuvent facilement commencer.

Qu'est-ce que Stripos () ?

stripos () est une fonction de chaîne intégrée dans PHP, qui est utilisée pour trouver où une chaîne apparaît d'abord dans la chaîne cible. Semblable à StrPOS () , mais la différence est que StrPOS () est insensible au cas. Ceci est particulièrement important lors du filtrage du contenu, car les utilisateurs peuvent essayer d'éviter "le mécanisme de filtrage avec différents cas.

grammaire:

 stripos(string $haystack, string $needle, int $offset = 0): int|false

Si l'aiguille est trouvée, revenez au premier emplacement d'occurrence; Si le besoin n'est pas trouvé, revenez faux .

Étape 1: Définissez une liste de mots sensibles

Tout d'abord, nous préparons un ensemble de "mots sensibles" qui doivent être filtrés:

 $sensitiveWords = ['annoncer', 'Illégal', 'jaune', 'm66.net'];

Remarque: nous utilisons également m66.net comme l'un des mots sensibles au test (en supposant qu'il s'agit d'un nom de domaine interdit, par exemple uniquement).

Étape 2: Construisez la fonction de filtre

Ensuite, nous créons une fonction qui détecte et remplace les mots sensibles:

 function filterContent(string $content, array $words, callable $callback): string {
    foreach ($words as $word) {
        // utiliser stripos Découvrez si des mots sensibles sont inclus(Cas insensible au cas)
        while (($pos = stripos($content, $word)) !== false) {
            $replacement = $callback($word);
            $content = substr_replace($content, $replacement, $pos, strlen($word));
        }
    }
    return $content;
}

La clé de cette fonction est d'utiliser des stripos pour trouver des mots sensibles et de décider comment "remplacer" ces mots via des fonctions de rappel.

Étape 3: Définissez la fonction de rappel

Définissons une fonction de rappel très simple, en remplaçant le mot sensible par un astérisque:

 $replaceWithStars = function($word) {
    return str_repeat('*', mb_strlen($word));
};

Bien sûr, vous pouvez également passer en [mots sensibles] et [bloquant] les styles en fonction des besoins de votre entreprise.

Étape 4: Testez le filtre

Nous essayons de traiter un commentaire utilisateur simulé:

 $comment = "Ce site est aussijauneC'est,C'est simplementIllégal!jeter un coup d'œil http://m66.net Vous saurez le lien,Il y a aussi diversannoncer。";

$filteredComment = filterContent($comment, $sensitiveWords, $replaceWithStars);

echo $filteredComment;

Le résultat de la sortie sera:

 Ce site est aussi****C'est,C'est simplement**!jeter un coup d'œil http://****** Vous saurez le lien,Il y a aussi divers**。

résumé

Cet article montre comment combiner des stripos et des fonctions de rappel pour construire un filtre de mot sensible concis et efficace. Les avantages de cette approche sont:

  • Insensible au cas, le filtrage est plus rigoureux;

  • La fonction de rappel est flexible et a une forte évolutivité;

  • Prend en charge toute solution de remplacement de chaînes pour répondre à divers besoins de scénario.

Bien sûr, ce n'est que la version la plus élémentaire. Vous pouvez étendre davantage, comme utiliser des expressions régulières pour filtrer les URL, prendre en charge la reconnaissance de la segmentation des mots chinois ou intégrer le vocabulaire de la gestion de la base de données pour le rendre plus intelligent et plus puissant!

J'espère que cet article vous inspirera! Si vous avez un moyen plus cool de l'implémenter, veuillez le partager aussi ~