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 en face de son intervention. Enfin si vous voulez inviter quelqu'un à réagir, utilisez les appeaux ci-dessous. Seuls les membres logués peuvent utiliser les appeaux et seuls les membres actifs peuvent être appeautés ^^. Bonne notification ! 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. |