Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/06/2006, 10h15   #1
Membre habitué
 
Avatar de kivan666
 
Inscription : janvier 2006
Messages : 243
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : janvier 2006
Messages : 243
Points : 137
Points : 137
Envoyer un message via Skype™ à kivan666
Par défaut Expression régulière pour réduire des URL

Voilà, comme implémenté sur certains forums, j'aimerai via expressions régulières, "réduire" les URL trop longues.

exemple, que http://www.blablablablablablablablablabla.com s'affiche http://www.blabla...bla.com


le but est de ne pas ecarteler les pages comme cela le fait quand la longueure des liens dépasse leur largeure.


merci d'avance
kivan666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2006, 10h46   #2
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
pas besoin d'une regexp pour ça...

ton URL est trop longue, tu prends N caracatères du début (substr), N de la fn (faut être sûr que l'URL a une taille > 2N+3 : strlen) et tu mets "..." au milieu...
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2006, 10h49   #3
Membre habitué
 
Avatar de kivan666
 
Inscription : janvier 2006
Messages : 243
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : janvier 2006
Messages : 243
Points : 137
Points : 137
Envoyer un message via Skype™ à kivan666
ouai, mais si l'URL est dans un champs texte cela me force à analyser les chaque mot du texte 1 par 1...
kivan666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2006, 10h52   #4
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
dans ce cas, fait une fonction qui se charge de faire la transformation, et utilisé l'option e des expressions régulière PCRE : http://fr.php.net/pcre
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2006, 11h36   #5
Membre habitué
 
Avatar de kivan666
 
Inscription : janvier 2006
Messages : 243
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : janvier 2006
Messages : 243
Points : 137
Points : 137
Envoyer un message via Skype™ à kivan666
finalement j'y suis arrivé avec des expression régulières :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
 
function stringLimit($string) {
 
    $max_caracteres=80;
 
   if (strlen($string[1])>$max_caracteres)
   {
	$string[1] = substr($string[1], 0, $max_caracteres);
	$string[1] .= "...";
    }
    else
	$string[1]=ereg_replace("\+$","",$string[1]);
 
    return  $string[1];
}
 
 
$message = preg_replace ("`( http://[.a-z0-9/\-_%]+)`i"," <a href=\\1 target='_blank'>\\1+</a>", $message); 
$message = preg_replace_callback ("`( http://[.a-z0-9/\-_%]+)\+`i",'stringLimit', $message);
je rajoute un + pour bien distinguer l'URL après le a href et cette entre les balises <a href=></a>
kivan666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2006, 12h37   #6
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Cette fonction fonctionne pas chez moi, je sais pas pourquoi.
J'ai essayé en enlevant les [1] (pas pigé à quoi ils servent), c'est pareil.
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2006, 21h39   #7
Membre habitué
 
Avatar de kivan666
 
Inscription : janvier 2006
Messages : 243
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : janvier 2006
Messages : 243
Points : 137
Points : 137
Envoyer un message via Skype™ à kivan666
C'est parce que dans string[0] tu as l'expression regulière trouvée, et dans le 1 la première parathèse capturante...

et que je ne veux remplacer que celle-ci.

Si tu essaye d'utiliser cette fonction, il faut bien comprendre qu'elle ne remplace que les URL commençant par http:// ET un espace avant celle-ci, pour faire la distinction avec celle du type [URL=http://...]
kivan666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h34.


 
 
 
 
Partenaires

Hébergement Web