Help : (str_replace) et (split ou explode) ne marchent pas ! ?

Signaler
Messages postés
25
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
31 août 2007
-
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
-
Salut tt le monde !
G ajouté une page de recherche dans mon forum et ca marche tres bien ... le seul prob C lorsque qu'on cherche des mots avec plusieur espace (exp : "php upload" )

voici le code source :

$le_mot=strtoupper($_POST['Mots']); //le mot a rechercher

$le_mot=str_replace(" ", " ", $le_mot);// remplacer les double espace par un seul comme ca jaurai qu'un seul espace entre chaque mot et G tester avec un echo : ca marche ! mais apres :

$les_mots = split(" ", $le_mot); // je decoupe les mots mais il ne prend pas en considairation le str_replace !

//tt ceci pour arriver a :
$taille=count($les_mots);
for($i=0;$i<$taille;$i++)

{
$sql=$sql."(Sujet like ucase('%".$les_mots[$i]."%'))";
if ($i!=$taille-1) {$sql=$sql." and ";}
}

aidez oi SVP et merci d'avance @+

12 réponses

Messages postés
152
Date d'inscription
jeudi 10 avril 2003
Statut
Membre
Dernière intervention
18 novembre 2004

Salut,

Utilises plutôt la fonction suivante :

str_word_count

elle te retourne un tableau avec tous les mots de ta chaîne.

Le lien :

http://www.nexen.net/docs/php/annotee/function.str-word-count.php

A+
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut ;-)

Tu peux utiliser explode à la place de split.

Es-tu sûr que explode ne fonctionne pas ?

tes espaces sont-ils convertis en espaces insécables ?

a ++

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3
Salut slmnsnts,
Utilise plutôt explode() pour effectuer des recherches en mode logique OR.
Deplus tu va être confronter à pas mal de 'faille' d'affichage dût aux caractéres unique non metacaractéres.

Exemple de source utilisant la fonction explode() :
http://www.phpcs.com/code.aspx?ID=20903

$tab = explode(' ' , $mots);
$nb = count($tab);
$sql = "SELECT * FROM moteur WHERE description LIKE '%$tab[0]%' "; 
for($i = 1; $i < $nb; $i++){
$sql .= "OR LIKE '%$tab[$i]%'";


Fonction explode() : http://www.nexen.net/docs/php/annotee/function.explode.php

J'espere t'avoir suffisament aider, sinon laisse nous un message.

Bye.
Messages postés
25
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
31 août 2007

Enfin ca marche !
Merci beaucoup les mecs pour votre aides :)
Messages postés
5
Date d'inscription
dimanche 11 juillet 2004
Statut
Membre
Dernière intervention
25 octobre 2004

comment a tu fait ? Parce que moi j'ai un probleme la fonction explode ne semble pas fonctionner (je suis chez free.)
Je cherche a extraire le nom d'un fichier a partir d'un chemin :
c:\dossier\fichier.ext
je essayer les 2 manieres suivante :

$lechemin= $lechemin."\fin";
$tab=explode('\\',$lechemin);
$i=0;
while ($tab[$i]!="fin")
$i++;
$nomfic=$tab[$i-1];

Mais tab est vide.
et :

$tab=explode('\\',$lechemin);
$monfic=sizeof($tab)>1?$tab[sizeof($tab)-1]:'';

Mais rien non plus apparement c bien explode qui doit deconner !
Si vous avez deja eu un probleme de ce type ca m'interresse.

Merci beaucoup.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut :-)

Tu peux utiliser basename pour obtenir le nom de fichier :

$fichier=basename ($dossier);

si tu veux supprimer l'extension du fichier pour ne retourner que le nom, tu peux faire ceci :

$fichier=basename($dossier,".php");

par exemple pour enlever le ".php" (mets l'extension que tu veux)

a ++

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
Messages postés
5
Date d'inscription
dimanche 11 juillet 2004
Statut
Membre
Dernière intervention
25 octobre 2004

Merci mais j'ai resolu le probleme apparement c simplement ke j'avai oublier de faire un stripslashes avant d'utiliser mon chemin !
Que de temps passer a chercher pour une si petite erreur mais je vais tout de meme essayer ta fonction pour voir !
Merci beaucoup.
Messages postés
5
Date d'inscription
dimanche 11 juillet 2004
Statut
Membre
Dernière intervention
25 octobre 2004

Heu tien je vient te tester la fonction basename mais elle ne fonctionne pas dans mon cas car le chemin est un chemin windows ( avec des \ et non des /) donc ca ne semble pas etre bon ...
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Ok effectivement garde ta solution alors :-)

a ++

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
Messages postés
5
Date d'inscription
dimanche 11 juillet 2004
Statut
Membre
Dernière intervention
25 octobre 2004

Bon j'ai trouver d'ou venai mon probleme ce n'etait pas mon stripslashes ! Mais simplement mon afectation d'une case su tableau a ma variable nom de fichier.
c'est $nomfic=$tab[$i-1]; qui ne fonctionne pas !
allez savoir pourquoi ?
Messages postés
5
Date d'inscription
dimanche 11 juillet 2004
Statut
Membre
Dernière intervention
25 octobre 2004

ralala je spam...
Bon excuser moi pour le bordel que j'ai foutu pour une simple inversion de lettre!
Et oui vous lisez en ce moment l'homme le plus bete du monde qui a chercher pendant 2 heure pour trouver simplement qu'il avait inverser 2 lettre dans le nom de sa variable...
Merci encore pour tout !
++
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3
Non ne t'excuse pas, j'ai reçu 10 nouveaux emails pour ce sujet sinon sa rox.
Tien je vous ajoute encore un email ;)
slmnsnts pense à valider les bonnes réponse pour bien ordonner les visiteurs desereux de savoir la réponse.

Vincent.