Remplacements de mots dans une chaine en PHP

Discussion dans 'Administration d'un site Web' créé par ecocentric, 30 Juillet 2005.

  1. ecocentric
    ecocentric WRInaute accro
    Inscrit:
    10 Février 2004
    Messages:
    2 653
    J'aime reçus:
    0
    Je cherche une manière efficace de supprimer très rapidement dans une chaîne de caractères une liste de mots.

    J'ai pensé le faire avec strtr mais, alors, il ne remplace pas des mots mais des caractères.

    J'ai pensé aussi passer par des tableaux en explosant ma chaine via explode puis en calculant la différence via array_diff puis ensuite en recomposant une chaine via implode.

    Vous en pensez quoi ?

    Avez-vous une meilleure idée ?

    Merci d'avance.
     
  2. psykoko
    psykoko WRInaute occasionnel
    Inscrit:
    3 Juin 2005
    Messages:
    280
    J'aime reçus:
    0
    ereg_replace (le_mot_que_tu_recherche, ce_que_tu_veux_mettre_en_remplacement(donc ici tu mets ""), ta_chaine_de_caractere)

    plus d'info : -http://www.nexen.net/docs/php/annotee/function.ereg-replace.php
     
  3. jerome347
    jerome347 WRInaute occasionnel
    Inscrit:
    19 Mars 2004
    Messages:
    468
    J'aime reçus:
    0
    str_replace peut prendre un tableau en entrée/sortie, donc tu peux faire :

    $asupprimer = Array("mot1","mot2","mot3");
    $chaine = str_replace($asupprimer,"",$chaine);
     
  4. ecocentric
    ecocentric WRInaute accro
    Inscrit:
    10 Février 2004
    Messages:
    2 653
    J'aime reçus:
    0
    str_replace remplace aussi des caractères, pas des mots.
     
  5. psykoko
    psykoko WRInaute occasionnel
    Inscrit:
    3 Juin 2005
    Messages:
    280
    J'aime reçus:
    0
    ereg_replace

    remplace une chaine de caractère ;)
     
  6. jerome347
    jerome347 WRInaute occasionnel
    Inscrit:
    19 Mars 2004
    Messages:
    468
    J'aime reçus:
    0
    Gna ?

    Dans la doc il y a un exemple :
    // Provides: You should eat pizza, beer, and ice cream every day
    $phrase = "You should eat fruits, vegetables, and fiber every day.";
    $healthy = array("fruits", "vegetables", "fiber");
    $yummy = array("pizza", "beer", "ice cream");
    $newphrase = str_replace($healthy, $yummy, $phrase);

    Cet exemple marche bien chez moi (et j'utilise str_replace pour remplacer des mots/chaines dans plusieurs scripts sans soucis).
     
  7. ecocentric
    ecocentric WRInaute accro
    Inscrit:
    10 Février 2004
    Messages:
    2 653
    J'aime reçus:
    0
    Et preg_replace peut prendre des tableaux.

    Par contre, je ne capte pas, mon code de donne rien, dès que je rajoute les \b ...

    Code:
    $temp = $from;
    $n = count ($arwords);
    for ($i=0; $i<$n; $i++)
    	$temp = ereg_replace ("/\b".$arwords[$i]."\b/i", "", $temp);
    $to = $temp; 
     
  8. ecocentric
    ecocentric WRInaute accro
    Inscrit:
    10 Février 2004
    Messages:
    2 653
    J'aime reçus:
    0
    Je n'ai pas dit que ça ne marche pas. Ce que je dis, c'est que si tu lui mets "ice", par exemple, il va t'amputer "iceberg". Je veux une fonction qui permette de ne supprimer que des mots entiers.
     
  9. ecocentric
    ecocentric WRInaute accro
    Inscrit:
    10 Février 2004
    Messages:
    2 653
    J'aime reçus:
    0
    Merci. En fait, preg_replace, qui est repris sur la page de ereg_replace me convient mieux. Par contre, j'ai toujours un problème avec cette @?#& d'expression régulière ;-) !
     
  10. jerome347
    jerome347 WRInaute occasionnel
    Inscrit:
    19 Mars 2004
    Messages:
    468
    J'aime reçus:
    0
    ah, excuse, je n'avais pas compris la question dans ce sens là.
     
  11. ecocentric
    ecocentric WRInaute accro
    Inscrit:
    10 Février 2004
    Messages:
    2 653
    J'aime reçus:
    0
    Arf, ça y est, ça marche avec preg_replace :

    Code:
    $n = count ($arwords);
    for ($i=0; $i<$n; $i++)
    	$arwords1[$i] = "/\b".$arwords[$i]."\b/i";
    $arwords2 = array_fill(0, $n, "");
    $to = preg_replace($arwords1, $arwords2, $from);
    echo "<p> LEN preg_replace : ".strlen($to)."</p>";
    echo "<p>$to</p>";
    
    Yapluka nettoyer le code.

    Merci à tous pour l'aide.
     
Chargement...
Similar Threads - Remplacements mots chaine Forum Date
Remplacements des caracteres spéciaux?? URL Rewriting et .htaccess 10 Avril 2007
Graphique ne s'affiche pas pour idée de mots clés AdWords 9 Avril 2022
Occurrence des mots clés dans les pages listes de produits e-commerce 23 Février 2022
Données volumétrie mots clés non disponible Référencement Google 1 Février 2022
Faire un état des lieux du référencement (mots-clés, trafic) Débuter en référencement 1 Février 2022
Problème de prise de mots clés Référencement Google 30 Janvier 2022
Suggestions de mots clés sur un liste de 15 000 mots Rédaction web et référencement 7 Décembre 2021
Travailler sur les mots-clés d'une page déjà réferencée Rédaction web et référencement 24 Novembre 2021
Combien de mots pour des descriptions de fiches produit Référencement Google 5 Novembre 2021
Combien de mots pour une fiche produit alimentaire ? Débuter en référencement 5 Novembre 2021
Volume recherche mots-clés Débuter en référencement 31 Octobre 2021
contenu populaire et mots clés Débuter en référencement 18 Octobre 2021
Comment gérer les variantes de mots-clés pour le SEO ? Débuter en référencement 11 Octobre 2021
Quels sont les meilleurs générateurs de mots-clés ? Débuter en référencement 21 Septembre 2021
Mettre tout les mots de son titre dans l'url? Rédaction web et référencement 16 Septembre 2021
Problème smart bidding et mots-clés AdWords 21 Août 2021
Zombie or not? Ne plus ranker sur certains mots clés Référencement Google 7 Juillet 2021
Les mots-clés de mon site ne sont pas détectés par les robots de référencement Problèmes de référencement spécifiques à vos sites 7 Juillet 2021
Astuce Cannibalisme des mots clés Débuter en référencement 16 Juin 2021
Je ne rank pas sur les bons mots-clés Débuter en référencement 8 Juin 2021