[RESOLU] Expression régulière avec un flitre?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Expression régulière avec un flitre?

Re: Expression régulière avec un flitre?

par deadstar » 11 nov. 2012, 18:40

Merci sadeq , ça fonctionne à merveille! =D>

Re: Expression régulière avec un flitre?

par sadeq » 11 nov. 2012, 17:56

Bonjour, voici comment :
Pour bénéficier de la fonctionnalité callback il faut délimiter les occurrences recherchée par un délimiteur quelconque dans le texte source ainsi on pourra y mettre plusieurs url traitables. ici je vais utiliser les délimiteurs < et > pour qualifier les url à traiter.
<?php
//texte à analyser
$text = 'blabla blabla <http://www.google.fr/image1.png> blabla blabla ';
$text .= 'blabla blabla <http://www.google.fr> blabla blabla ';

//analyse du texte : detecte une forme d'url commençant par http ou https avec un callback qui analyse le résultat
$text = preg_replace_callback('#<(https?://[^>]*)>#','callback',$text);
//
echo $text;	

//callback d'analyse des occurrences trouvées
function callback($matches) { 
	//debug: echo '<pre>'; print_r($matches); echo '</pre>';
        //s'il s'agit d'une image encapsuler le résultat dans la balise <img>
	if( preg_match('#[(png|jpg|gif)]$#',$matches[1])){ return '<img src="' .$matches[1]. '" />'; }
	else { return '<a href="' .$matches[1]. '" target="_blank">' .$matches[1]. '</a>'; } //sinon l'url devient un lien hypertexte
}
?>

Expression régulière avec un flitre?

par deadstar » 09 nov. 2012, 18:00

Bonjour à tous,

Voilà je bloque sur une expression régulière.
Je voudrais rendre cliquable liens liens d'un texte (ex; passer de http://www.google.fr à < a href="http://www.google.fr">http://www.google.fr</a > )
sauf quand il s'agit d'un image, que j'aimerais pouvoir afficher directement (donc passer de http ://www.leserveur.com/image1.jpg à <i mg src="http ://www.leserveur.com/image1.jpg" />

Je suis près du but mais je ne trouve pas comment écrire l'expression régulière qui va exclure les liens dont les extensions sont des images (c'est la partie [^(png|jpg|gif)] qui me pose problème , je ne sais pas comment l'écrire ni ou la placer:

Code : Tout sélectionner

$text= preg_replace_callback('#((https?://)[-a-zA-Z0-9@:%_,\+.~\#\€\[\]\{\}\;?&//=][^(png|jpg|gif)])#', create_function('$matches', 'return \'<a href=".$matches[1]. \'" target="_blank">\'.$matches[1). \'</a>\';'), $text);
Merci par avance pour le coup de main!