Version complète: sur le forum Webmaster Hub : Eliminer les espaces vides d'un array
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
furious Gontran
Re...

Pour un moteur de recherche, j'elimine les mots non significatifs par un explode et une serie de boucle for:

Lorsqu'un mot non signifiant est trouvé je fais: $Mot[$o]="";

Le soucis est que mon tableau contient ensuite des valeurs vides.

Je n'ais pas trouvé de fonction permettant de supprimer ces valeurs de mon tableau...en existe t'il une ?

Voici le code au cas ou:
CITATION
$Nonpert=array("le", "la", "les", "de", "des", "et", "l", "a", "que", "qui");

$Mot=explode(" ", $Mots);

  for ($i=0;$i<=10;$i++)
  {
       for ($o=0;$o<sizeof($Mot);$o++)
       {
            if ($Mot[$o]==$Nonpert[$i])
            {
             $Mot[$o]="";
             }
        }
    }


Je rajoute une question ici pour eviter un autre sujet...

Comment faire au sein d'une boucle for pour determiner des variables nommé:
je veux decouper les valeurs de mon tableau en variable unique.

Ces variables idealement nommées $mot1, $mot2, $mot3 dans la limite du
sizeof($Mot).
quelle syntaxe utiliser ?
si je fais $mot.$i par exemple, ca marche ??
($i etant la variable de la boucle for)
Jok
Il faut que tu repere l'endroit ou tu as un espace vide puis ensuite tu le supprime :
CODE
function suppr($tab, $element) {
    array_splice ($tab, $element, 1);
    return $tab;
}


Pour ta deuxieme question, utilise la fonction eval de php :
CODE
eval("\$mot".$i." = 'le contenu de ta variable';");

Eval évalue le contenu de ce que tu lui passe en parametre.
Si tu lui passe :
CODE
eval("\$toto=1;");

La variable $toto sera créé et contiendra la valeur 1.
Fuleran
CITATION(furious Gontran @ jeudi 30 décembre 2004, 14h12)
Re...

Pour un moteur de recherche, j'elimine les mots non significatifs par un explode et une serie de boucle for:

Lorsqu'un mot non signifiant est trouvé je fais: $Mot[$o]="";

Le soucis est que mon tableau contient ensuite des valeurs vides.

Je n'ais pas trouvé de fonction permettant de supprimer ces valeurs de mon tableau...en existe t'il une ?


Bonjour,

personnellement au lieu de mettre ta case à vide je la détruirai directement avec un unset. Par contre, comme l'index de ton tableau va devenir non linéaire, j'utiliserais plutot foreach pour le parcourir...

Benoit
petit-ourson
CITATION(furious Gontran @ jeudi 30 décembre 2004, 14h12)
si je fais $mot.$i par exemple, ca marche ??
($i etant la variable de la boucle for)
*


Ou avec un

CODE
${$mot.$1} = "tavaleur";


Ca devrait marcher.

Pour le tableau, je ferai pareil que fuleran à savoir détruire les cases plutot que les mettre vide.
furious Gontran
Merci bien.
Je vais tenter ca comme ca.
Par contre j'ais un peu de mal a voir comment utiliser foreach mais j'vais m'y mettre.
Dan
Salut Furious Gontran,

Je ne vois pas exactement ce que tu cherches à faire, mais il me semble que tu souhaites éliminer les mots non pertinents de ta liste.

Je ferais comme ceci:
CODE
<?php
$Mots="la liste des mots a tester";
$Nonpert=array("le", "la", "les", "de", "des", "et", "l", "a", "que", "qui");
$Mot=explode(" ", $Mots);

foreach($Mot as $motsimple) {
    if (array_search($motsimple,$Nonpert) === false)
 $resultats[]=$motsimple;
}

print_r($resultats);
?>

Ce n'est pas plus simple ? wink.gif

Dan
furious Gontran
blush.gif
Ben vi, mais tu comment c'est: plus c'est simple...
Dan
CITATION(furious Gontran @ mardi 04 janvier 2005, 11h17)
Ben vi, mais tu comment c'est: plus c'est simple...
*
Tu aurais la même avec le décodeur ? laugh.gif
Anonymus
J'aurais fais :
CITATION
<?php
$Mots="la liste des mots a tester";
$Nonpert=array(" le ", " la ", " les ", " de ", " des ", " et ", " l ", " a ", " que ", " qui ");
$replace="";

$resultats = str_replace($Nonpert,$replace,$Mots);

print_r($resultats);
?>


Ceci dit, attention aux mots vides de sens.
"Gare de L'Est" contient 2 mots importants, alors que
"Il est beau" n'est contient qu'un...
furious Gontran
_AT_Dan
oublié le verbe...
tu sais comme c'est: plus c'est simple, moi ou trouve....

_AT_Anonymus
vi mais je ne peux pas non plus retirer toutes les conjugaisons...
ca risque d'etre long...
Remi
CITATION
CODE
${$mot.$1} = "tavaleur";

Je n'avais jamais vu ce genre de syntaxe.
Cela fonctionne ?
(j'ai essayé mais sans résultat)
Jok
Oui oui .... c'est comme si tu faisais un eval.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.