Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1476 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  eregi_replace et expressions régulières

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

eregi_replace et expressions régulières

n°479424
Free_RideR​_
get up haaaaaaaaa....
Posté le 07-08-2003 à 00:10:32  profilanswer
 

salut à tous,
 
voilà mon chtit problème:
dans du texte saisi par un internaute, j'aimerais limiter la taille de tout les mots (ou expressions tordues...) à 26 caractères. facile me direz vous:
$mess = eregi_replace("([a-z0-9-]{26})", "\\1 " ,$mess);
 
ainsi, les mots sont coupés, un espace est rajouté. mais si le mec saisit un truc bien tordu, ce code ne marche plu du tout:
______________________________________________________________
_blah_blah_blah_blah_blah_blah_blah_blah_blah_blah_blah_blah
############################################################
 
etc... essayez, vous verrez!
vu que je maitrise pas trop les expressions régulières c'est chaud...
 
si vous avez une solution, je suis preneur!
 
par avance merci pour votre aide  :)


Message édité par Free_RideR_ le 07-08-2003 à 00:12:57

---------------
www.element62.com
mood
Publicité
Posté le 07-08-2003 à 00:10:32  profilanswer
 

n°483466
karamilo
Posté le 11-08-2003 à 14:34:54  profilanswer
 

la fonction wordwrap() le fait toute seule :)

n°484622
momo194
Posté le 12-08-2003 à 10:40:31  profilanswer
 

Bcp plus barbare, mais tellement plus personnalisable...

Code :
  1. <?
  2. $message="hahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa je vais foutre le bordel grâce à ma super-longue chaîne de caractères";
  3. $tab_mots = explode(" ", $message); 
  4. // nb mots dans la chaîne  
  5. $nb_mots = count($tab_mots); 
  6. $i = 0;
  7. while($i <= $nb_mots)
  8. {
  9. if(strlen($tab_mots[$i]) > 26)
  10. {
  11. $tab_mots[$i] = chunk_split("$tab_mots[$i]","26","-<br>" );
  12. $tab_mots[$i] = substr("$tab_mots[$i]", "strlen($tab_mots[$i])", "-5" );
  13. }
  14. $i++;
  15. }
  16. $message = implode(" ",$tab_mots);
  17. echo $message;
  18. ?>


Message édité par momo194 le 12-08-2003 à 10:42:23
n°484644
ACut
Posté le 12-08-2003 à 10:55:06  profilanswer
 

free_rider_ a écrit :


...limiter la taille de tout les mots (ou expressions tordues...) à 26 caractères. facile me direz vous:
$mess = eregi_replace("([a-z0-9-]{26})", "\\1 " ,$mess);
 
ainsi, les mots sont coupés, un espace est rajouté. mais si le mec saisit un truc bien tordu, ce code ne marche plu du tout:
______________________________________________________________
_blah_blah_blah_blah_blah_blah_blah_blah_blah_blah_blah_blah
############################################################
 
etc... essayez, vous verrez!
...


 
C'est normal que ça marche pas puisque ta regexp ne mouline que sur les alphanums avec trait d'union. Tout ce qui va sortir de ce pattern reste inchangé. Si tu veux inclure dans le traitement les # _ etc., faut élargir.
 
Edit1: Petite remarque, ton [a-z0-9-] me gêne un peu, je verrais plutôt [a-z0-9\-] car le moins doit être échappé.
 
Edit2: Ca donnerait quoi ça:
$mess = eregi_replace("[^ \f\r\t\n]{26}", "\\1 " ,$mess);


Message édité par ACut le 12-08-2003 à 11:11:20

---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  eregi_replace et expressions régulières

 

Sujets relatifs
[Meta-prog] Les templates-Expressions[JS] problème avec les expressions régulières
Problème avec str_replaceQuestion sur les expressions régulières en PHP
expressions régulières et balises HTMLY-a-til un équivalent string_replace ou ereg_replace en C++ ?
[ PHP et autre ] Les expressions régulières. 
Plus de sujets relatifs à : eregi_replace et expressions régulières


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR