[PHP] Supprimer les mots de moins de x caractères
29 messages • Page 2 sur 2 • 1, 2
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
Je préfère preg_replace
- Code: Tout sélectionner
$var = preg_replace('/[ ]([\S]{1,2})[ ]/',' ', $var);
Comme l'avait dit Georges, ce code pose problème si cela concerne le premier mot : il n'est pas remplacé. Je suppose qu'il faudrait rajouter quelque chose dans le regex pour le premier mot (avec ^) mais je dois dire que je n'y arrive pas...
Je continue à chercher, mais si qqun peut éclairer ma lanterne, qu'il n'hésite pas
Je continue à chercher, mais si qqun peut éclairer ma lanterne, qu'il n'hésite pas
Bon! J'ai réussi à le faire en utilisant deux regex de suite.
Par contre, cela crée un espace en début de chaine, donc il faut utiliser trim() ensuite pour le supprimer.
Si quelqu'un parvient à faire ça en un seul regex (et sans trim)...chapeau
- Code: Tout sélectionner
Suppression des mots de moins de 4 lettres :
$chaine = ereg_replace('^.{1,3} ', ' ', $chaine);
$chaine = ereg_replace(' .{1,3} ', ' ', $chaine);
Par contre, cela crée un espace en début de chaine, donc il faut utiliser trim() ensuite pour le supprimer.
Si quelqu'un parvient à faire ça en un seul regex (et sans trim)...chapeau
-

George Abitbol - WRInaute accro

- Messages: 1923
- Inscription: Ven Juin 06, 2003 7:57
- Code: Tout sélectionner
preg_replace('/\b[^ ]{1,3}\b/', '', $chaine);
Mais ce n'est pas parfait, ça oblige à faire le trim quand même.
Fred
Ok , voici le code PHP qu'utilise phpBB légèrement allégé ( au moins c'est sûr que ça marche ! ) :
où $entry est ta chaine de caractères .
- Code: Tout sélectionner
$drop_char_match = array('^', '$', '&', '(', ')', '<', '>', '`', '\'', '"', '|', ',', '@', '_', '?', '%', '-', '~', '+', '.', '[', ']', '{', '}', ':', '\\', '/', '=', '#', '\'', ';', '!');
$drop_char_replace = array(' ', ' ', ' ', ' ', ' ', ' ', ' ', '', '', ' ', ' ', ' ', ' ', '', ' ', ' ', '', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' , ' ', ' ', ' ', ' ', ' ', ' ');
$entry = ' ' . strip_tags(strtolower($entry)) . ' ';
$entry = preg_replace('/[\n\r]/is', ' ', $entry);
$entry = preg_replace('/\b&[a-z]+;\b/', ' ', $entry);
$entry = preg_replace('/\b[a-z0-9]+:\/\/[a-z0-9\.\-]+(\/[a-z0-9\?\.%_\-\+=&\/]+)?/', ' ', $entry);
for($i = 0; $i < count($drop_char_match); $i++)
{
$entry = str_replace($drop_char_match[$i], $drop_char_replace[$i], $entry);
}
$entry = str_replace('*', ' ', $entry);
$entry = preg_replace('/[ ]([\S]{1,2}|[\S]{3})[ ]/',' ', $entry);
où $entry est ta chaine de caractères .
Wow
Ils font pas dans la dentelle, c'est quand même un peu brutos !
Dans mon cas, les chaînes sont assez spécifiques et je pense que la soluce de George marche parfaitement (je verrai par la suite si je détecte des anomalies).
Cela dit, dans un cas plus complexe/général, ce code est sans doute plus sûr, je le note okazou
Merci !
Dans mon cas, les chaînes sont assez spécifiques et je pense que la soluce de George marche parfaitement (je verrai par la suite si je détecte des anomalies).
Cela dit, dans un cas plus complexe/général, ce code est sans doute plus sûr, je le note okazou
À propos du code de George :
Il marche parfaitement, le seul truc c'est qu'il est possible que j'aie à faire à des caractères autres que des lettres. Et là, dans ce cas, si par exemple j'ai la chaine "blabla - blablabla", il va me laisser le tirêt du milieu.
Y-a-t-il une petite astuce pour que ce code s'applique à tous les types de caractères ? C'est affreux, j'ai vraiment du mal avec ces regex, surtout quand c'est des preg_replace() !
Merci beaucoup
- Code: Tout sélectionner
preg_replace('/\b[^ ]{1,3}\b/', '', $chaine);
Il marche parfaitement, le seul truc c'est qu'il est possible que j'aie à faire à des caractères autres que des lettres. Et là, dans ce cas, si par exemple j'ai la chaine "blabla - blablabla", il va me laisser le tirêt du milieu.
Y-a-t-il une petite astuce pour que ce code s'applique à tous les types de caractères ? C'est affreux, j'ai vraiment du mal avec ces regex, surtout quand c'est des preg_replace() !
Merci beaucoup
- Code: Tout sélectionner
$var2 = preg_replace(array('/\-/','/\b[\S]{1,4}\b/'), '', $var);
ça devrait marcher pour les - comme ça !
Bienvenue et merci de consacrer ton 1er post pour m'aider
Par contre, le tiret était un exemple parmi d'autres, en fait je risque d'avoir affaire à beaucoup de caractères...donc si qqun a une solution qui fonctionne dans un cadre plus général, je vous remercie d'avance !
Par contre, le tiret était un exemple parmi d'autres, en fait je risque d'avoir affaire à beaucoup de caractères...donc si qqun a une solution qui fonctionne dans un cadre plus général, je vous remercie d'avance !
29 messages • Page 2 sur 2 • 1, 2
Formation recommandée sur ce thème :
Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Conseils d'optimisation de la balise TITLE (titre d'une page HTML)
- Google propose en option un lien pour supprimer un site des résultats
- Google Sitemap Generator version 1.3
- Robots.txt : Yahoo supporte les options avancées
- Nombre moyen de mots par requête : statistiques AOL Août 2006
- Google Sets
- Référencement : TrustRank et sites dignes de confiance
- Bien choisir le titre de chaque page : conseil n°4 en référencement
- 25 astuces pour optimiser son blog
- Google attaqué en justice
- supprimer mémorisation des mots de passe
- besoin de supprimer tous les mots de moins de 4 caractères
- Supprimer cookie et session php
- PHP - Supprimer un compte utilisateur
- Supprimer les doublons en php
- comment supprimer http://www. et .etc en php
- Tableau en PHP: Supprimer un ou plusieurs élément(s)
- supprimer une ligne sql et php
- PHP Supprimer les données d'une table.
- supprimer les guillemets d une chaine en PHP
- est il possible de supprimer une image d'un dossier en php ?
- Supprimer index.php pour garder uniquement le domaine
- [php] Supprimer une entré de tableau si mot detecté
- [PHP]Comment supprimer l'id de sessions sur IPB?
- Aide pour supprimer un noeud XML, PHP 5, DOM [RESOLU]
Consultez la description détaillée des produits ou services de Google suivants : Google Sets, Google Suggest, Google Apps for your Domain, Google Image Labeler
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités






le forum