Utilisatin de regex pour les liens www-http

bala -  
Dalida Messages postés 7114 Statut Contributeur -
Bonjour,
j ecris un petit site internet en php et j´utilise la methode de programmation oriente objet.
et je voudrai que tous les liens www ou http et eventuellement les https sois reconnue et cliquable.
malheureusement ma methode translate() ne fonctione pas quelqun a t il une solution?
merci d avance.

public function translate($blob){

if ($blob !="") {
$newvalue = nl2br($blob->load());
if (preg_match('#(www)[a-z0-9._/?&:=-]+#i', $newvalue)) {
return preg_replace('#(www)[a-z0-9._/?&:=-]+#i', '<a href="http://$0">$0</a>', $newvalue);

}

else if (preg_match('#(http://)[a-z0-9._/?&:=-]+#i', $newvalue)) {
return preg_replace('#(http://)[a-z0-9._/?&:=-]+#i', '<a href="$0">$0</a>', $newvalue);

}

else if (preg_match('#(https://)[a-z0-9._/?&:=-]+#i', $newvalue)) {
return preg_replace('#(http://)[a-z0-9._/?&:=-]+#i', '<a href="$0">$0</a>', $newvalue);

}

else if (preg_match('#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#i', $newvalue)) {
return preg_replace('#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#i', '<a href="mailto:$0">$0</a>', $newvalue);

}
else
return $newvalue;
}
else

return "";
}
A voir également:

5 réponses

Dalida Messages postés 7114 Statut Contributeur 923
 
0
bala
 
merci d avoir reagi rapidement.
le methodes propose ds ce lien marche effectivement; mais des que j ai a faire a un text ou il n ya qu un seul lien http, celui ci ne sera presente qu a moitie comme lien.
deplus je voudrai aussi que toutes les adresse email soit cliquable.
peut ton m aider?
mon code:
public function translateBlob($blob){

if ($blob !="") {
$newvalue = nl2br($blob->load());

$in=array(
'`(((https?|ftp)://(www\.)?[^www][[:alnum:]_.-]+)\.([a-z]{2,4}))`',
'`\s?(?<!//)(www\.)([[:alnum:]_.-]+)\.([a-z]{2,4})\s?\W?`');
$out=array(
'<a href="$1" target="_blank">$1</a>',
'<a href="http://$1" target="_blank">$1</a>');
return preg_replace($in,$out,$newvalue);
}



}
0
Dalida Messages postés 7114 Statut Contributeur 923
 
des que j ai a faire a un text ou il n ya qu un seul lien http, celui ci ne sera presente qu a moitie comme lien.
heu… ça veut dire quoi ?
0
bala
 
Salut
en fait j ai de nombreux textes qui sont stocke dans ma base de donnees. avec la methode translateBlob($blob)
je traite ces textes avant de les presenter.j utilise pour ce faire des regex pour dire: qu importe le texte qui sera sortie de la base de donnees, si il contient du www+chaine de charactere, du http/s ou du ftp +chaine de characteres;tout comme une ou des adresse emails se goupe de mot doit toutde suite etre cliquable. et s il ne contient aucun lien de la sorte alors je renvoie le texte tel quel.

tous les tutos ki mon ete propose me propose des methodes ou des liens ds certain textes ne sont pas reconnu quelqun aurait til une solution final? qui me permettrai de representer tous les liens dans tous les textes
public function translateBlob($blob){

if ($blob !="") {
$newvalue = nl2br($blob->load());

$in=array(
'`(((https?|ftp)://(www\.)?[^www][[:alnum:]_.-]+)\.([a-z]{2,4}))`',
'`\s?(?<!//)(www\.)([[:alnum:]_.-]+)\.([a-z]{2,4})\s?\W?`');
$out=array(
'<a href="$1" target="_blank">$1</a>',
'<a href="http://$1" target="_blank">$1</a>');
return preg_replace($in,$out,$newvalue);
}



}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dalida Messages postés 7114 Statut Contributeur 923
 
des liens ds certain textes ne sont pas reconnu
pour quelle raison ?
c'est ça qu'il faut définir.

as-tu des exemples d'URL qui ne sont pas reconnues ?
0