Lister et dédoublonner les mots bannis d'un texte

WRInaute accro
Bonjour,

J'ai créer un filtre pour ressortir la liste des mots bannis d'une texte. J'en profite pour vous le donner.
Simple: d'un coté le texte et de l'autre la liste de mots bannis/
Reste encore un bug -> Le code fonctionne trés bien mais des que j'essaye de passer ce code dans une fonction, cela ne fonctionne plus du tout.

Une idée ?


Code:
<?php

$tb_m_b = 'je|tu|il|ils|elle|elles';
$titre = "Je suis avec elle pour elle meme!";

function liste_mots_bannis_et_deboublonne($titre) {
$x=0;
$tab_invalide = array();
// passe le texte en minuscule
$titre = strtolower($titre);
// passe la chaine en tableau
$titre_tab = split("[^[:alpha:]]+", $titre);
// ressort la liste des mots interdits
foreach($titre_tab as $v)  {
       $tab_invalide[$x] .= ''.(ereg('('.$tb_m_b.')', $v) ? '-'.$v.' ' : '').'';
       $x++; }
// dedoublonne
$tab_invalide = array_unique($tab_invalide);
// passe le tableau en chaine
foreach($tab_invalide as $b)  $tab_final_invalide .= ''.$b.'';
// le resultat est dans $tab_final_invalide
   return $tab_final_invalide;
   }

if(ereg('('.$tb_m_b.')',$titre))
 {  echo 'Mots non autorisés: ('.liste_mots_bannis_et_deboublonne("$titre").')<br />';
 }

?>

affiche:
Mots non autorisés: (-Je -suis -avec -pour -elle -meme - )

Ne fonctionne pas puisque cela retourne la liste de tout les mots

Code:
<?php

$tb_m_b = 'je|tu|il|ils|elle|elles';
$titre = "Je suis avec elle pour elle meme!";

$x=0;
$tab_invalide = array();
// passe le texte en minuscule
$titre = strtolower($titre);
// passe la chaine en tableau
$titre_tab = split("[^[:alpha:]]+", $titre);
// ressort la liste des mots interdits
foreach($titre_tab as $v)  {
       $tab_invalide[$x] .= ''.(ereg('('.$tb_m_b.')', $v) ? '-'.$v.' ' : '').'';
       $x++; }
// dedoublonne
$tab_invalide = array_unique($tab_invalide);
// passe le tableau en chaine
foreach($tab_invalide as $b)  $tab_final_invalide .= ''.$b.'';
// le resultat est dans $tab_final_invalide


if(ereg('('.$tb_m_b.')',$titre)) { echo 'Mots non autorisés: ('.$tab_final_invalide.')<br />';
 }
?>

affiche:
Mots non autorisés: (-je -elle )

Ce code par contre fonctionne trés bien.
 
WRInaute passionné
Ta variable $tb_m_b est global. Sauf que dans ta fonction, si tu veux y acceder comme une variable globale, tu dois l'indiquer à php en mettant dans ta fonction la ligne :
GLOBAL $tb_m_b;
Sinon, php supoose que ta variable $tb_m_b est locale, et donc elle est vide.
 
WRInaute accro
j'espere qui t'en reste encore tout un pack pour WRI, car moi me reste encore quelque matins à faire la tete dans le sac ;)
 
WRInaute passionné
KOogar a dit:
j'espere qui t'en reste encore tout un pack pour WRI, car moi me reste encore quelque matins à faire la tete dans le sac ;)

Un pack de BA ? Tu rêve ! J'ai même pas été nominé pour le "meilleur wrinaute de l'année", donc je refuse de rendre encore service ! :)
 
WRInaute passionné
arnaudmn a dit:
KOogar a dit:
j'espere qui t'en reste encore tout un pack pour WRI, car moi me reste encore quelque matins à faire la tete dans le sac ;)

Un pack de BA ? Tu rêve ! J'ai même pas été nominé pour le "meilleur wrinaute de l'année", donc je refuse de rendre encore service ! :)

Je te note sur mes tablettes. Pour dans un an s'il y a le même challenge.
 
Discussions similaires
Haut