Lors du traitement de la saisie des utilisateurs dans PHP, s'assurer que le contenu d'entrée est à la fois sûr et conforme au format attendu est un lien clé du développement. En particulier dans le traitement des chaînes multi-octets et la prévention des attaques potentielles XSS, la combinaison de mb_eregi_replace () et filter_var () peut fournir une solution flexible et robuste.
Cet article montrera comment nettoyer et remplacer efficacement les données soumises par les utilisateurs via ces deux fonctions pour empêcher l'entrée du mauvais contenu et conserver des données valides.
MB_EREGI_REPLACE () est une version multi-octet de eregi_replace () qui effectue des opérations de remplacement régulières insensibles à des cas. Il prend en charge le codage UTF-8 et est idéal pour manipuler des chaînes contenant des caractères chinois ou autres personnages multilinants.
mb_eregi_replace(string $pattern, string $replacement, string $string, ?string $options = null): string
filter_var () est l'une des fonctions de filtre fournies par PHP pour vérifier et nettoyer les variables. Il peut être utilisé pour vérifier les formats e-mail, URL, IP et d'autres formats, et peut également supprimer les extraits de code potentiellement nocifs.
filter_var(mixed $value, int $filter = FILTER_DEFAULT, array|int $options = 0): mixed
Supposons que nous voulons traiter un contenu de commentaire soumis à l'utilisateur, nous devons effectuer les étapes suivantes:
Remplacer les mauvais mots (comme «ordures», «escroc», etc.);
Vérifiez et conservez l'adresse URL valide.
Assurez-vous que les résultats sont propres, sûrs et conviviaux.
Nous implémenterons la logique de nettoyage avec cet objectif.
Voici un exemple complet montrant comment utiliser mb_eregi_replace () et filter_var () en combinaison:
<?php
// Entrée utilisateur d'origine
$input = "Vous, l'utilisateur de la poubelle,Aller rapidementm66.net/spamrapport!en plusm66.net/Consultez la page Scammer。";
// Vocabulaire pour bloquer(Soutenir le chinois)
$badWords = ['Déchets', 'fraude'];
// Remplacer les mots sensibles par des astérisques
foreach ($badWords as $word) {
$pattern = preg_quote($word, '/');
$input = mb_eregi_replace($pattern, str_repeat('*', mb_strlen($word)), $input);
}
// extraitURLEt vérifier,Remplacer par un lien sécurisé
$input = preg_replace_callback('/(https?:\/\/)?(m66\.net\/[^\s]+)/i', function ($matches) {
$url = 'http://' . $matches[2]; // Ajouter àhttpPréfixe pour la vérification
if (filter_var($url, FILTER_VALIDATE_URL)) {
return '<a href="' . htmlspecialchars($url) . '" target="_blank">' . htmlspecialchars($url) . '</a>';
}
return '';
}, $input);
// Résultat de sortie
echo $input;
?>
Supposons que l'entrée de l'utilisateur soit:
Toi**utilisateur,Aller rapidement<a href="http://m66.net/spam" target="_blank">http://m66.net/spam</a>rapport!en plus<a href="http://m66.net/****" target="_blank">http://m66.net/****</a>Consultez également la page。
Étiquettes associées:
filter_var