[php] convertir "maPage" en "ma page"

convertir "maPage" en "ma page" [php] - PHP - Programmation

Marsh Posté le 24-05-2005 à 10:41:55    

Salut,  
je cherche à convertir une chaine de caractère afin de la rendre plus présentable...
 
comment faire pour obtenir une phrase lisible à partir de ce type de mot "maPageDeGarde" en "ma page de garde"
 
 
Merci bien
++

Reply

Marsh Posté le 24-05-2005 à 10:41:55   

Reply

Marsh Posté le 24-05-2005 à 11:54:32    

strToLower() devrait faire l'affaire...

Reply

Marsh Posté le 24-05-2005 à 11:56:24    

sinon avec preg_split()

Reply

Marsh Posté le 24-05-2005 à 11:56:46    

Tu mets la chaine dans un tableau, que tu parcours, en recréant un tableau pour la chaine modifiée.  
 
En scannant le tableau d'origine, tu détectes les maj, et a chaque maj, t'insère un espace dans le tableau final, puis un strtolower pour mettre la majuscule en minuscule dans le tableau final.
 
Pis après, tu recrées la chaine à partir du tableau final.
 
Edit : d'autres ont pensé à mieux ... désolé j'aime bien coder mes propres fonctions, et j'ai pas pensé au xreg_split()


Message édité par plainsofpain le 24-05-2005 à 11:57:38

---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 24-05-2005 à 11:59:18    

pardon, j'avais pas vu le coup des espaces. Sinon, tu peux te faire une dictionnaire de mots puis tu utilises les expressions régulières et à chaque mot trouvé, tu insère un espace...

Reply

Marsh Posté le 24-05-2005 à 12:06:23    

j'ai codé ca a l'arrache , ca marche mais c po tres bo :p
 

Code :
  1. <?php
  2. function convert($chaine)
  3. {
  4. $tab = preg_split('/([A-Z])/',$chaine,-1,PREG_SPLIT_DELIM_CAPTURE);
  5. if(!empty($tab))
  6. {
  7.  $finale = '';
  8.  for($i=0;$i<count($tab);$i++)
  9.  {
  10.   if(ereg('[A-Z]',$tab[$i]))
  11.   {
  12.    $finale .= ' '.strtolower($tab[$i]);
  13.   }
  14.   else
  15.   {
  16.    $finale .= $tab[$i];
  17.   }
  18.  }
  19.  $finale = trim($finale);
  20.  return $finale;
  21. }
  22. }
  23. ?>

Reply

Marsh Posté le 24-05-2005 à 12:28:29    

on s'en fout que ce soie beau si c commenté et que y'a que toi qui le lis ....  

Reply

Marsh Posté le 24-05-2005 à 12:35:34    

Plus compacte :
 

Code :
  1. $string = 'superLesExpressionsRegulieres !';
  2. $string = preg_replace('#([A-Z])#e' , '\' \'.strtolower(\'\1\')' , $string);
  3. echo $string;


Message édité par afbilou le 24-05-2005 à 12:36:02
Reply

Marsh Posté le 24-05-2005 à 13:12:57    

merci beaucoup, surtout pour la regex :)
 
++

Reply

Marsh Posté le 24-05-2005 à 14:02:05    

Attention a ne pas commencer ta phrase par une majuscule, sinon tu auras un espace devant.
Bon on pourrait modifier la regexp pour que cette denrniere ne remplace que les characteres en majuscules qui sont precedes d'un charactere en minuscule.
En tentant une rapide de la regexp sans verification, je pense a un truc du genre :

Code :
  1. $string = 'superLesExpressionsRegulieres !';
  2. $string = preg_replace('#[a-z]([A-Z])#e' , '\' \'.strtolower(\'\1\')' , $string);
  3. echo $string;


(a verifier)


Message édité par cerel le 24-05-2005 à 14:19:18
Reply

Marsh Posté le 24-05-2005 à 14:02:05   

Reply

Marsh Posté le 24-05-2005 à 14:10:46    

Arf c'est pas pas comme ca qu'il faut faire alors ...
 

Code :
  1. <?
  2. $string = 'SuperLesExpressionsRegulieresVersion2 !';
  3. $string = preg_replace('#(?<=[a-z])([A-Z])#e' , '\' \'.strtolower(\'\1\')' , $string);
  4. echo $string;
  5. ?>


 
Qui donne -> Super les expressions regulieres version2 !


Message édité par afbilou le 24-05-2005 à 14:10:59
Reply

Marsh Posté le 24-05-2005 à 14:20:42    

Hmmm, faut pas que tu metes \2 a la place de \1 ? Car sinon il va remplacer la premiere recurence entre ( ), non ?
 
Je suis encore inexperimente en regexp, mwa :p

Reply

Marsh Posté le 24-05-2005 à 14:21:19    

non

Reply

Marsh Posté le 24-05-2005 à 15:07:49    

denzz a écrit :

on s'en fout que ce soie beau si c commenté et que y'a que toi qui le lis ....


 
 
ce que j'entendais par beau c'est que c'est tout sauf optimisé

Reply

Sujets relatifs:

Leave a Replay

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