Le sujet n'est probablement pas aussi clair qu'il pourrait l'être, mais j'avais du mal à trouver une meilleure façon de le décrire facilement.Un moyen rapide de faire correspondre un tableau de mots avec un bloc de texte?
Je suis en train d'implémenter un filtre de badword sur certains articles que nous récupérons d'un flux XML. En ce moment j'ai les badwords dans un tableau et vérifie simplement le texte comme si;
str_replace($badwords, '', $text, $count);
if ($count > 0) // We have bad words...
Mais c'est SLOW! Tellement lent! Et quand j'essaie de traiter plus de 30 000 articles à la fois, je commence à me demander s'il existe une meilleure façon d'y parvenir. Si seulement des strpos pris en charge des tableaux! Même alors, je ne pense pas que ce serait plus rapide ...
Je voudrais des suggestions. Merci d'avance!
EDIT:
J'ai maintenant testé quelques méthodes entre les appels à microtime() pour les temps. str_replace() = 990 secondes preg_match() = 1029 secondes (Rappelez-vous que je n'ai besoin de les identifier que pour les remplacer) pas de mauvais filtrage de mots = 1057 secondes (vraisemblablement parce qu'il a encore un millier d'articles à traiter .
Merci pour toutes les réponses, je me contenterai toujours avec str_replace. :)
Si vous traitez des articles vous pourriez 30,000+ vouloir envisager quelque chose autre que PHP qui a été construit pour une tâche comme celle-ci. sed http://www.grymoire.com/Unix/Sed.html (à condition qu'il soit disponible sur votre plate-forme) Disclaimer: aucune idée si c'est plus rapide – rojoca
Sed est probablement plus rapide. –
Ouais sed est une excellente idée en fait, pourrait traiter le xml avant de l'importer. Regardera cela comme une solution. – Christian