PHP Expression régulière : rendre clickable toutes les url d'un texte

Discussion dans 'Débuter en référencement' créé par jackmick777, 16 Février 2011.

  1. jackmick777
    jackmick777 Nouveau WRInaute
    Inscrit:
    29 Juin 2009
    Messages:
    10
    J'aime reçus:
    0
    Bonjour,

    je souhaiterais remplacer toutes les url non balisé d'un texte par des url cliquable <a href=""> sauf les url d'images qui sont dans une balise src=""

    Le code ci dessous fonctionne très bien sauf qu'il me remplace également les url des images. Comment modifier mon expression régulière de manière à excluse les urls images qui sont dans une balise src="" ?

    function replace_url_in_text ($text){
    $in = array('`((?:https?|ftp)://\S+[[:alnum:]]/?)`si');
    $out = array('<a href="$1">$1</a>');
    return preg_replace($in, $out, $text);
    }

    $texte = 'Ceci est un exemple http://www.domainaremplacer.com et <img src="http://domain.com/exemple/test.jpg" />';
    echo replace_url_in_text($texte);

    Résultat :
    ----------

    Ceci est un exemple <a href="http://www.domainaremplacer.com">http://www.domainaremplacer.com</a> et <img src="<a href="http://domain.com/exemple/test.jpg">http://domain.com/exemple/test.jpg</a>" />

    Quelqu'un pourrait m'aider ?

    merci
     
  2. seebz
    seebz WRInaute impliqué
    Inscrit:
    15 Avril 2007
    Messages:
    722
    J'aime reçus:
    0
    Ma fonction autolink() devrait t’intéresser.
    Je viens de la mettre à jour pour répondre à ton besoin ;)
     
  3. jackmick777
    jackmick777 Nouveau WRInaute
    Inscrit:
    29 Juin 2009
    Messages:
    10
    J'aime reçus:
    0
    Ah super, merci infiniment.

    Ce qu'un homme sème il le récoltera ! Merci pour cette semence.

    ps : Serait-il possible de modifier encore un peut la fonction pour qu'elle traite également les url sans les http:// mais avec les www sous la forme www.domain.tdl ?
     
  4. seebz
    seebz WRInaute impliqué
    Inscrit:
    15 Avril 2007
    Messages:
    722
    J'aime reçus:
    0
    A première vue, cette modif devrait faire l'affaire, mais elle va faire n'importe quoi si elle rencontre une url du genre xxx.www.example.com :

    Code:
    function autolink($str, $attributes=array()) {
    	$attrs = '';
    	foreach ($attributes as $attribute => $value) {
    		$attrs .= " {$attribute}=\"{$value}\"";
    	}
    
    	$str = ' ' . $str;
    	$str = preg_replace(
    		'`([^"=\'>])((http|https|ftp)://[^\s<]+[^\s<\.)])`i',
    		'$1<a href="$2"'.$attrs.'>$2</a>',
    		$str
    	);
    	$str = preg_replace(
    		'`([^"=\'>\/])(www\.[^\s<]+[^\s<\.)])`i',
    		'$1<a href="http://$2"'.$attrs.'>$2</a>',
    		$str
    	);
    	$str = substr($str, 1);
    	
    	return $str;
    }
    
    edit: en fait, ca va faire n'imp' avec une url qui contiendra "www." qui ne soit pas précédé de "/" (ex : example.com/xxx.www.html).
    Perso, je ne l'utiliserai pas :roll:
     
  5. jackmick777
    jackmick777 Nouveau WRInaute
    Inscrit:
    29 Juin 2009
    Messages:
    10
    J'aime reçus:
    0
  6. jackmick777
    jackmick777 Nouveau WRInaute
    Inscrit:
    29 Juin 2009
    Messages:
    10
    J'aime reçus:
    0
    Ce qui serait intéressant c'est de faire une expression régulière comme webrank info le fait, elle pourrait être exécuter avant autolink() et elle aurait pour objectif d'ajouter "http://" devant toutes les urls du texte qui commence par "www." et qui ne serait pas dans des balises html.

    Seriez vous en mesure de le faire ?
     
  7. jackmick777
    jackmick777 Nouveau WRInaute
    Inscrit:
    29 Juin 2009
    Messages:
    10
    J'aime reçus:
    0
    J'ai rajouté une ligne à votre code et ca semble régler le problème :

    Code:
    $text  = ' ' . $text;
    		$text  = preg_replace ('`([ ,;:!\|\.\?\\n])(www\.[^\s<]+[^\s<\.)])`i', '$1http://$2', $text);// replace www.domain.tdl => http://www.domain.tdl
    		$text  = preg_replace('`([^"=\'>])((http|https|ftp)://[^\s<]+[^\s<\.)])`i', '$1<a href="$2"'.$attrs.'>$2</a>', $text);
    		$str   = substr($text, 1);
    
     
Chargement...
Similar Threads - PHP Expression régulière Forum Date
PHP Expressions Régulières ! Modifier plusieurs occurences Développement d'un site Web ou d'une appli mobile 5 Août 2015
Besoin aide sur Expression régulières en PHP. Développement d'un site Web ou d'une appli mobile 19 Juin 2009
PHP - preg_match_all() et expressions regulieres Développement d'un site Web ou d'une appli mobile 24 Août 2007
Question expressions régulières preg_match_all PHP Développement d'un site Web ou d'une appli mobile 19 Août 2007
Expressions régulières php pour traiter un texte Développement d'un site Web ou d'une appli mobile 26 Avril 2007
[Résolu] expressions régulières et PHP Développement d'un site Web ou d'une appli mobile 5 Avril 2007
[PHP Expressions régulières] Interdire chaîne Développement d'un site Web ou d'une appli mobile 19 Janvier 2006
[PHP] Expressions régulières, récupération de données Développement d'un site Web ou d'une appli mobile 9 Janvier 2006
Regrouper des expressions qui se ressemblent, en PHP ou MySQL, à l'aide Développement d'un site Web ou d'une appli mobile 6 Mars 2011
[PHP / Expression Reg.] Extraire les attributs d'une image ? Développement d'un site Web ou d'une appli mobile 13 Septembre 2008
expression php Développement d'un site Web ou d'une appli mobile 14 Avril 2006
expression imcompréhensible en php Développement d'un site Web ou d'une appli mobile 31 Mars 2006
Arborescence de classes PHP et séquentialité. Développement d'un site Web ou d'une appli mobile Lundi à 10:57
Afficher des infos depuis plusieurs page en PHP Développement d'un site Web ou d'une appli mobile 23 Mars 2022
Sites de scripts PHP, jQuery, Ajax, etc. Le café de WebRankInfo 20 Mars 2022
Détecter arrêt user d'un script PHP ? Développement d'un site Web ou d'une appli mobile 28 Décembre 2021
sessions PHP sans cookies ? Développement d'un site Web ou d'une appli mobile 26 Décembre 2021
Afficher la dernière version d'un fichier php ? Développement d'un site Web ou d'une appli mobile 8 Novembre 2021
PHP / CURL : interrogation page tiers ne fonctionne plus Développement d'un site Web ou d'une appli mobile 2 Octobre 2021
Actualiser un script php toutes les 10 secondes Développement d'un site Web ou d'une appli mobile 6 Septembre 2021