Petit probleme php de traitement de chaine (string) assez basic

Petit probleme php de traitement de chaine (string) assez basic - PHP - Programmation

Marsh Posté le 29-12-2005 à 13:50:40    

Bonjour
 
je programme depuis quelques temps, un script php, mon 1er vraiment elaboré, il fait plus de  300 lignes de code :)
 
Voila, je récupere cette expression dans une variable :
 
 
$express1 = "Forum enseignants";
 
Je voudrais deja detecté si cette expression fait bien 2 mots, si elle en fait plus on l'ignore, comment faire ?
 
 
si tel est le cas, je souhaiterais mettre dans l'espaces le mot : "des" par exemple
 
Vous avez une petite piste sous la main ?
 
merci de votre patience :)
 

Reply

Marsh Posté le 29-12-2005 à 13:50:40   

Reply

Marsh Posté le 29-12-2005 à 13:54:11    

Hello
 
tu peux regarder du coté de la fonction explode pour decouper ta chaine :
http://fr2.php.net/manual/fr/function.explode.php
 
ensuite tu regarde la taille du tableau généré
 
++
Fluminis


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
Reply

Marsh Posté le 29-12-2005 à 13:58:29    

super merci, et pour connaitre si une phrase contient plus de 2 mots ou pas ?
 
impec je chauffe la :)

Reply

Marsh Posté le 29-12-2005 à 14:04:10    

Oui enfin t'as des fonctions toutes faites pour faire ça:

Code :
  1. if ( str_word_count ( $string, 0) == 2){
  2.   $string = str_replace ( " ", " des ", $string);
  3. }


Reply

Marsh Posté le 29-12-2005 à 15:10:59    

merci :)
 
et sauriez vous comment séparrer une phrase en 2 parties
 
par exemple "maison jaune est belle"
 
récupéré dans uen variable le 1er mot de la phrase "maison" et dans une 2eme variable tous le reste de la phrase : "jaune est belle" ?
 
Ca serais vraiment "l'extase" pour moi :)
 
merci


Message édité par Foxus666 le 29-12-2005 à 15:11:32
Reply

Marsh Posté le 29-12-2005 à 15:39:14    

Il y a surement plus simple mais bon ...   :ange:  
 

Code :
  1. $phrase = "maison jaune est belle";
  2. $phrase = explode(" ", $phrase);
  3. $var1 = $phrase[0];
  4. $nb = count($phrase);
  5. for ($i=1 ; $i<$nb ; $i++){
  6. $var2 .= " ".$phrase[$i];
  7. }
  8. echo $var1."<br>"; // maison
  9. echo $var2; // jaune est belle

Reply

Marsh Posté le 29-12-2005 à 15:47:38    

nonostradamus a écrit :

Il y a surement plus simple mais bon ...   :ange:  


Bin avec un regex ça me parait plus simple:

Code :
  1. preg_match_all("/(\W*?)\s(.*)/", $string, $result);


 
Et tu te retrouves avec le 1er mot dans $result[0] et le reste dans $result[1]!!!
 
 

Reply

Marsh Posté le 29-12-2005 à 15:52:58    

merci a vous 2 !!!
 
j'ai fait la methode de anapajari mais helas j'obtien la valeur texte "Array" que ca sois en $result[0] ou $result[1], curieux phenomene...
Vous auriez une idée du pouquoi ? :)
 
merci beaucoup


Message édité par Foxus666 le 29-12-2005 à 15:53:21
Reply

Marsh Posté le 29-12-2005 à 16:01:19    

parce que je suis un quiche :o
J'avais oublié que preg_match_all retourne un tableau de tableau
donc tes variables sont dans $result[1][0] et $result[2][0]

Reply

Marsh Posté le 29-12-2005 à 16:06:58    

Ou la la anapajari non t'est loin d'etre une quiche lol : Tu m'a sauver la mise :)
 
En effet cela marche a la PERFECTION ta methode, bravo et merci de ton aide et te patience :)
entre temps j'avais tenter la methode de nonostradamus mais ca faisait une boucle sans fin et mon apache était en surcharge lol, mais en une ligne TAC simple et efficace :)
 
encore merci ^^

Reply

Marsh Posté le 29-12-2005 à 16:06:58   

Reply

Marsh Posté le 29-12-2005 à 16:28:06    

Oups, par contre pour une raison unconnu je n'ai rien dans la variable $result[1][0], vide... pour le $result[2][0] c impec j'ai bien la seconde parti  de la phrase.... :/
 

Reply

Marsh Posté le 29-12-2005 à 16:40:35    

bin ce que je disais suis un quiche :o
 
J'ai merdé la regex, remplace \W par \w donc ça donne:

Code :
  1. preg_match_all("/(\w*?)\s(.*)/", $string, $result);


 
ça devrait mieux marcher ;)

Reply

Marsh Posté le 29-12-2005 à 16:43:40    

LOL :lol: dit donc comment ça tien a pas grand chose le php :)
 
En effet c'est impec, exactement ce que je souhaitais
 
merci beaucoup ^^

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed