Regex : rendre clicable un lien + couper les long mots sans couper l'url !

Répondre
mobman02
mobman02
Déconnecté
http://damienalexandre.fr/
Bonjour, je me suis mis dans un vrai casse tête...

Je une regex pour transformer les url en lien:

  1. $donnees['message_chat'] = eregi_replace("([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])",
  2. "<a href=\"\\1://\\2\\3\" target=\"_blank\">lien</a>",$donnees['message_chat']);
  3.  


Jusque la ca marche.

Ensuite j'ai aussi une fonction pour couper les mots trop long...
  1.  
  2. function cutLongWords($string,$length='15',$separation=' ')
  3. {
  4. return preg_replace('/([^ ]{'.$length.'})/si','\\1'.$separation,$string);
  5. }
  6.  

Voila, mon probleme c'est que la fonction pour couper les mots coupe aussi l'url qui est dans le lien...

J'aimerais dire a ma fonction de ne pas couper les grand mots contenue entre < et >.
Mais moi et les expression reguliere on est pas encore tres copain...

Quelqu'un peu m'aider ?
Merci ;)
JuTs
JuTs
Déconnecté
JuTs
J'ai le même problème. Mais j'ai procédé dans l'ordre inverse : couper la chaîne, puis passer le regex.

Je n'ai pas encore de solution mais je pensais rechercher la position du dernier tag [...] et du dernier [/...]. Si le dernier [/...] est avant le dernier [...] c'est qu'il manque un [/...]

Je ne suis pas allé plus loin que ça pour le moment.

Ma fonction regex si sa peut intéresser qqn
http://www.lephpfacile.com/wall/wall.php?id=2414
savageman
savageman
Déconnecté
Ceci vous aidera peut-être

lien

Version plus récente:
http://www.phpfrance.com/forums/voir_sujet-199.php
mobman02
mobman02
Déconnecté
http://damienalexandre.fr/
Merci pour vos liens,
bon en attendant, j'ai commencer a apprendre les expression régulieres,
c'est encore plus dur que ce que je pensait xD

Je commence a y aller a taton pour ma regex, voici le premier echantillon de bout de debut de code propre ^^

  1.  
  2. <?  
  3. $donnees['message_chat'] = "unlonglonglonglongmots qui va etre couper, et un url aussi tres http://www.longlonglonglonglong.com qui ne doit pas se couper !";  
  4.  
  5. $donnees['message_chat'] = eregi_replace("([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])",  
  6. "<a href=\"\\1://\\2\\3\" target=\"_blank\">lien</a>",$donnees['message_chat']);  
  7.  
  8. // je commence par transformer mon url en lien  
  9. // apres faut que je mette mes espace hors tag html  
  10. // alors la elle est simplissime, apres faudras la corriger :/ mais je suis pas douer  
  11.  
  12. $separation = " ";  
  13. $length = "5";  
  14.  
  15. preg_replace('![^<]*([^ ]{'.$length.'})[^>]*!','\\1'.$separation,$donnees['message_chat']);  
  16.  
  17. echo $donnees['message_chat'];  
  18. ?>
  19.  


ca me retourne
  1. unlonglonglonglongmots qui va etre couper, et un url aussi tres <a href="http://www.longlonglonglonglong.com" target="_blank">lien</a> qui ne doit pas se couper ! 


En gros l'espacement ne se fait pas smiley

J'ai chercher des technique pour dire a mon second regex de ne pas modifier ce qu'il y a entre des crochet, mais du coup il modifi plus rien du tout.

L'erreur doit etre toute bete en plus :(

Merci pour votre aide @+
JuTs
JuTs
Déconnecté
JuTs
En gros l'espacement ne se fait pas


??? Heu... En fait je ne suis plus très sûr de comprendre ce que tu veux faire. Tu dois faire quoi avec le longs mots ?
Bzh
Bzh
Déconnecté
Inserer un espace pour que la deuxième partie passe à la ligne automatiquement si j' ai bien compris...

Ciao...
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Php - Breizh Blog