![]() ![]()
| ![]() 04 06 2002 � 21:41 ![]() | ![]() ![]() |
![]() | Bonjour, Je bute sur un probleme. Comment couper un texte et a la fois mettre un lien? > Couper le texte : $message = eregi_replace("^(. {10} )(.*)" ,"\\1..." , $message); > Faire un lien : $message = eregi_replace("([[:alnum:]]+)://([^[:space:]]*)([[ :alnum:]#?/&=])", " <A HREF=\"\\1://\\2\\3\"> \\1://\\2\\3 </A> ",$message); Le seul probleme, c'est qu'il coupe mon l'url egalement et donc le lien est faux! J'aimerai qu'il coupe le lien, mais pas l'url... Merci de l'eclairer. | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 05 06 2002 � 02:52 ![]() | ![]() ![]() ![]() ![]() |
![]() | ben essaie, eventuellement de mettre 2 fois ton lien sur le texte coup� !! 1 lien sur un morceau et un autre sur l'autre morceau !!! | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 05 06 2002 � 06:50 ![]() | ![]() ![]() ![]() ![]() |
![]() | Ben disons que c'est un peu normal: Si ta fonction de cesure est mal param�tr�e, ca va couper tes URL, c�d que tu laisse pas assez de place (de caract�res) pour que l'url soit interpr�t�e. Utilises plutot une fonction comme ca, ou tu peut toi meme d�finir la longueur maximale de la cesure: function cutLines($string,$length='40',$separation=' ') { return preg_replace('/([^ ] {'.$length.'} )/si','\\1'.$separation,$string); } TU voit que la, par d�faut, la cesure se fait tous les 40 caract�res, mais bon, on sait jamais, moi je mets une cesure � 70 caract�res. ( donc, tjrs un problemes avec les liens de plus 70 caracteres: avec un num�ro de session �n�rme, par exmple) Ensuite, c'est quand tu parses tes URLs que le truc se joue: la aussi, tu doit d�finir une longueur MAXIMUM d'affichage, sous peine de voir un lien te p�ter ta mise en page. function url_parse($tmp_url="") { $max_url=30; $max_aff=22; $symbol="..."; preg_match_all("/http:\/\/([_a-zA-Z0-9-.\/]+)/si", $tmp_url, $url_array); for($i=0;$i <count($url_array[0]);$i++) { if($url_done[$url_array[0][$i]]!="done") { strlen($url_array[0][0])> $max_url ? $temp2=substr($url_array[0][0],0,$max_aff).$symbol : $temp2=$url_array[0][0] ; $tmp_url = ereg_replace( $url_array[0][$i], " <A HREF=\"".$url_array[0][$i]."\" target=\"_blank\"> ".$temp2." </A> ", $tmp_url ); $url_done[$url_array[0][$i]] = "done"; } } preg_match_all("/[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)* @[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)/si", $tmp_url, $email_array); for($i=0;$i <count($email_array[0]);$i++) { $tmp_url = ereg_replace( $email_array[0][$i], " <A HREF=\"mailto:".$email_array[0][$i]."\"> ".$email_array[0][$i]." </A> ", $tmp_url ); } return $tmp_url; } Cette deuxieme fonction parse les HTTP: et les liens MAIL (style ***@***.***) ( tu peut la modifier pour qu'elle accepte aussi les FTP: ) Si tu regarde au d�but de cette fonction, tu voit les 2 variables qui g�rent l'affichage: $max_url est la longueur maximale autoris�e pour une URL, et $max_aff est la longueur de l'URL � l'affichage. En gros, si la fonction trouve une URL sup�rieure � 30 car., ca la coupe � 22 caract�res et lui rajoutes $symbol ( les fameux "..." ^^ ). A toi de jouer avec les param�tres ensuite, pour un bon affichage selon la longueur de tes champs d'affichage !!!! ![]() Yop ! | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 05 06 2002 � 16:05 ![]() | ![]() ![]() ![]() ![]() |
![]() | Je vais peut etre paraitre con, mais la variable du message, on la place ou? Merci ^^ | ![]() |
![]() | Warning: A non-numeric value encountered in /home/piregwan/public_html/forum2/afficher_bannieres.php on line 314
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 05 06 2002 � 16:34 ![]() | ![]() ![]() ![]() ![]() |
![]() | Ahlala ... un peu de jugeotte, que diable !!! Pour la fonction cutlines: $message=cutLines($message,70,' ') C�d: coupe moi les lignes de $message tous les 70 caract�res, et tu rajoutes un espace ! Apr�s fout le contenu dans la variable $message. Pour la fonction url_parse: $message=url_parse($message) C�d: Parse moi les URL dans la varible $message. Je sais, je suis faignasse, j'ai mis les param�tres dans l'appel de la fonction. Mais je pense que tu peut le faire de toi meme, non ??? Ou alors, modifie directement les variables $max_url, $max_aff, $symbol. | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 05 06 2002 � 18:17 ![]() | ![]() ![]() ![]() ![]() |
![]() | j'essaie, et je te dis. | ![]() |
![]() | Warning: A non-numeric value encountered in /home/piregwan/public_html/forum2/afficher_bannieres.php on line 314
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 06 06 2002 � 15:06 ![]() | ![]() ![]() ![]() ![]() |
![]() | salut un autre moyen pour simplifier grandement le dev par la suite, c'est aussi d transformer ta chaine (g�n�ralement une phrase) en un tableau de mots. un mot est une suite de caract�res pr�c�d� et suivi d'un espace. fonction EXPLODE() tr�s pratique par la suite, tu peux facilement identifer un mot classique des autres (mots commencant par http ou contenant un @). a partir de l�, tu appliques un traitement sp�cifique selon le type de mot rencontr�. ouala. les fonctions de kohai semblent tr�s sympathiques aussi bonne continuation a+ pg | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() | Pour r�pondre � ce sujet (et notifier automatiquement son auteur), cliquez sur le bouton REPONDRE A CE SUJET. Si vous voulez en plus avertir de votre r�ponse une personne qui a particip� � ce sujet, cliquez sur le bouton ![]() Vous n'�tes pas membre ou vous n'�tes pas logu�(e) ou les appeaux sont d�sactiv�s dans votre profil. Vous ne pouvez pas utiliser les appeaux. | ![]() |