fonction php de détection de liens ?

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Fab le Fou, 11 Janvier 2006.

  1. Fab le Fou
    Fab le Fou WRInaute passionné
    Inscrit:
    2 Décembre 2004
    Messages:
    1 109
    J'aime reçus:
    0
    Bonjour,

    Je cherche une fonction php qui détecte les liens dans les textes que je lui fournis et les rend actif.

    C'est-à-dire que si dans le texte il y a un -http://www.example.com ou un [email protected], elle les détecte et les encadre des balises qu'il faut pour qu'ils soiient cliquables (en protégeant si possible les e-mails).

    Bref, rien de bien méchant, mais comme ça existe déjà, inutile de réinventer la roue. 8)

    fab
     
  2. bozoleclown
    bozoleclown WRInaute impliqué
    Inscrit:
    24 Novembre 2005
    Messages:
    693
    J'aime reçus:
    0
  3. mr_go
    mr_go WRInaute passionné
    Inscrit:
    21 Septembre 2005
    Messages:
    1 688
    J'aime reçus:
    2
    Ca doit être un truc comme ca :

    eregi_replace("http://www.example.com","<a href='URL'>\\1</a>","TON TEXTE");
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 207
    J'aime reçus:
    365
    Code:
    <?php
    // Function converts plain-text email addresses and URLs to hyber links
    function autoLink($str, $max = 1000) {
    
    	// URL - http/https/ftp - larger than $max
    	$pattern[0] = "/(?<!=\"|=)(http|https|ftp):\/\/([\S]{".$max."})([\S]{0,})/";
    	$replace[0] = '<a href="$1://$2$3" title="$1://$2$3">$1://$2 ...</a>&nbsp;&nbsp;<a href="$1://$2$3" title="'.NAV_OPEN_NEW_WINDOW.': $1://$2$3" onclick="javascript:window.open(this.href);return false;"><img src="'.ABSOLUTE_URL.'images/new-window.gif" alt="Open in new window" /></a>';
    	
    	// URL - http/https/ftp - smaller than $max
    	$pattern[1] = "/(?<!=\"|=|>)(http|https|ftp):\/\/([^\s]*)/";
    	$replace[1] = '<a href="$1://$2">$1://$2</a>&nbsp;&nbsp;<a href="$1://$2" title="'.NAV_OPEN_NEW_WINDOW.': $1://$2" onclick="javascript:window.open(this.href);return false;"><img src="'.ABSOLUTE_URL.'images/new-window.gif" alt="Open in new window" /></a>';
    	
    	// URL - www - larger than $max
    	$pattern[2] = "/(?<!=\"|=|http:\/\/)\b(w){3}\.([\S]{".$max."})([\S]{0,})\b/";
    	$replace[2] = '<a href="http://www.$2$3" title="http://www.$2$3">www.$2...</a>&nbsp;&nbsp;<a href="http://www.$2$3" title="'.NAV_OPEN_NEW_WINDOW.': http://www.$2$3" onclick="javascript:window.open(this.href);return false;"><img src="'.ABSOLUTE_URL.'images/new-window.gif" alt="Open in new window" /></a>';
    	
    	// URL - www - smaller than $max
    	$pattern[3] = "/(?<!=\"|=|http:\/\/|\">|>)\b(w){3}\.([^\s]*)\b/";
    	$replace[3] = '<a href="http://www.$2">www.$2</a>&nbsp;&nbsp;<a href="http://www.$2" title="'.NAV_OPEN_NEW_WINDOW.': http://www.$2" onclick="javascript:window.open(this.href);return false;"><img src="'.ABSOLUTE_URL.'images/new-window.gif" alt="Open in new window" /></a>';
    	
    	// Email
    	$pattern[4] = "/([A-Za-z0-9\+\-_]+)@([A-Za-z0-9-_]+)\.([A-Za-z]{2,4})([,.]?)/";
    	$replace[4] = '<a href="mailto:[email protected]$2.$3">[email protected]$2.$3</a>$4';
    	
    	$str = preg_replace($pattern, $replace, $str);
    	
    	return $str;
    }
    
    ?>
    
    et si tu veux encoder les emails en Javascript, petite fonction en +:
    Code:
    function encodeEmail($email, $name = null) {
    
    	$email = preg_replace("/\"/","\\\"",$email);
    
        if($name == null)
               $name = $email;
    
    	$old = "document.write('<a href=\"mailto:$email\">$name</a>')";
    
    	$output = "";
    
    	for ($i=0; $i < strlen($old); $i++) {
    	 $output = $output . '%' . bin2hex(substr($old,$i,1));
    	 }
    
    	$output = '<script type="text/javascript">eval(unescape(\''.$output.'\'))</script>';
    	$output .= '<noscript><div>'.TXT_NEED_JAVASCRIPT_TO_VIEW_EMAIL.'</div></noscript>';
    	return $output;
    }
    
    La fonction autoLink deviens donc:
    Code:
    // Function converts plain-text email addresses and URLs to hyber links
    function autoLink($str, $max = 1000) {
    
    	// URL - http/https/ftp - larger than $max
    	$pattern[0] = "/(?<!=\"|=)(http|https|ftp):\/\/([\S]{".$max."})([\S]{0,})/";
    	$replace[0] = '<a href="$1://$2$3" title="$1://$2$3">$1://$2 ...</a>&nbsp;&nbsp;<a href="$1://$2$3" title="'.NAV_OPEN_NEW_WINDOW.': $1://$2$3" onclick="javascript:window.open(this.href);return false;"><img src="'.ABSOLUTE_URL.'images/new-window.gif" alt="Open in new window" /></a>';
    	
    	// URL - http/https/ftp - smaller than $max
    	$pattern[1] = "/(?<!=\"|=|>)(http|https|ftp):\/\/([^\s]*)/";
    	$replace[1] = '<a href="$1://$2">$1://$2</a>&nbsp;&nbsp;<a href="$1://$2" title="'.NAV_OPEN_NEW_WINDOW.': $1://$2" onclick="javascript:window.open(this.href);return false;"><img src="'.ABSOLUTE_URL.'images/new-window.gif" alt="Open in new window" /></a>';
    	
    	// URL - www - larger than $max
    	$pattern[2] = "/(?<!=\"|=|http:\/\/)\b(w){3}\.([\S]{".$max."})([\S]{0,})\b/";
    	$replace[2] = '<a href="http://www.$2$3" title="http://www.$2$3">www.$2...</a>&nbsp;&nbsp;<a href="http://www.$2$3" title="'.NAV_OPEN_NEW_WINDOW.': http://www.$2$3" onclick="javascript:window.open(this.href);return false;"><img src="'.ABSOLUTE_URL.'images/new-window.gif" alt="Open in new window" /></a>';
    	
    	// URL - www - smaller than $max
    	$pattern[3] = "/(?<!=\"|=|http:\/\/|\">|>)\b(w){3}\.([^\s]*)\b/";
    	$replace[3] = '<a href="http://www.$2">www.$2</a>&nbsp;&nbsp;<a href="http://www.$2" title="'.NAV_OPEN_NEW_WINDOW.': http://www.$2" onclick="javascript:window.open(this.href);return false;"><img src="'.ABSOLUTE_URL.'images/new-window.gif" alt="Open in new window" /></a>';
    	
    	$str = preg_replace($pattern, $replace, $str);
    	
    	$emailPattern = "/([A-Za-z0-9\+\-_]+)@([A-Za-z0-9-_]+)\.([A-Za-z]{2,4})([,.]?)/";
    	
    	return preg_replace_callback(
    		$emailPattern,
    		create_function('$matches','return encodeEmail($matches[0]);'),
    		$str);
    }
    
     
  5. Fab le Fou
    Fab le Fou WRInaute passionné
    Inscrit:
    2 Décembre 2004
    Messages:
    1 109
    J'aime reçus:
    0
    Ok super, je vais tester la fonction de ce pas !
    ça a l'air très complet, merci !

    Fabrice
     
Chargement...
Similar Threads - fonction php détection Forum Date
PHP v8.2 fonction utf8_decode déprécié Développement d'un site Web ou d'une appli mobile 15 Novembre 2022
PHP / CURL : interrogation page tiers ne fonctionne plus Développement d'un site Web ou d'une appli mobile 2 Octobre 2021
mon code ne fonctionne pas pour masquer les .php URL Rewriting et .htaccess 31 Juillet 2021
La fonction mail (PHP) ne passe pas ! Demandes d'avis et de conseils sur vos sites 28 Juin 2021
Fonction récursive PHP. Développement d'un site Web ou d'une appli mobile 24 Avril 2021
[PHP] Détecter le navigateur / bot en fonction du HTTP_USER_AGENT Développement d'un site Web ou d'une appli mobile 14 Septembre 2019
Stocker dans des variables php les fonctions MySql Développement d'un site Web ou d'une appli mobile 2 Février 2019
redirection .htaccess index.php ne fonctionne pas URL Rewriting et .htaccess 13 Décembre 2018
[PHP] Détecter le navigateur / bot en fonction du HTTP_USER_AGENT Développement d'un site Web ou d'une appli mobile 12 Janvier 2017
Htaccess (ou php) qui modifie l'url en fonction de HTTP_ACCEPT_LANGUAGE Développement d'un site Web ou d'une appli mobile 29 Septembre 2016
[PHP] Cookie vide dans une fonction, complet juste avant ou après Développement d'un site Web ou d'une appli mobile 25 Novembre 2014
Faire fonctionner une variable phpbb en php Développement d'un site Web ou d'une appli mobile 27 Mars 2014
Comment ajouter un "ordre by DATE" dans cette fonction php ? Développement d'un site Web ou d'une appli mobile 23 Octobre 2012
PHP fonction obsolète Administration d'un site Web 20 Octobre 2012
Aide sur une fonction wordpress (php) Développement d'un site Web ou d'une appli mobile 11 Septembre 2012
Fonction PHP Développement d'un site Web ou d'une appli mobile 14 Juin 2012
Appel fonction php plus d'une fois Développement d'un site Web ou d'une appli mobile 29 Mai 2012
Constante php dans une fonction Développement d'un site Web ou d'une appli mobile 26 Avril 2012
FONCTION MAIL PHP Développement d'un site Web ou d'une appli mobile 2 Avril 2012
En tête html via la fonction mail() de php Développement d'un site Web ou d'une appli mobile 20 Mars 2012