Détecter url contenu dans le texte de la page

Eléphant du PHP | 331 Messages

22 sept. 2009, 10:44

Bonjour,

J'ai une page qui affiche dans son contenu une grande partie de textes cliquables (sous la forme http://www.site.com/etc..). En fait, c'est à chaque fois que ça commence par http:// et que ça se termine par le caractère précédent un espace.
Je voudrais qu'automatiquement cette zone de texte devienne cliquable, renvoyant bien sur sur cette même url, avec le target blank.

Est-ce possible d'avoir une fonction de reconnaissance qui me fasse tout ça ? (exactement comme le gère ce forum !!!)

Merci !

... peut-être ce ne sera pas du javascript d'ailleurs ... ?

Mammouth du PHP | 2937 Messages

22 sept. 2009, 13:49

Pas besoin de JavaScript, puisque PHP peut le faire : regarde du côté de la fonction preg_replace (). ;)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 sept. 2009, 14:54

Modération :
Afin d'obtenir plus de réponses, le sujet a été déplacé dans un forum plus approprié.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 331 Messages

23 sept. 2009, 08:09

Je n'arrive pas à mettre en place cette fonction, pouvez-vous me donner un exemple concret ?
Voici ce que j'ai :
<tr>
<td valign="middle"><img src="<? echo $tweet['image']?>"></td>
<td valign="middle"><? echo $tweet['message']." (<strong>".$tweet['nom']." - ".$AffichageDelai."</strong>)";?></td>
</tr>
C'est dans la variable $tweet['message'] que je voudrais faire cette detection et mettre en lien les urls rencontrées.

Merci d'avance !

Mammouth du PHP | 2937 Messages

23 sept. 2009, 14:55

<?php echo preg_replace ('#(ht{2}ps?:/{2}[^[:blank:]]+)#i', '<a href="\1" target="_blank" title="Aller à l\'URL \1 (nouvelle fenêtre)">\1</a>', $tweet['message']) ?>
Soit dit en passant, évite la notation raccourcie pour la balise d'ouverture PHP.

Eléphant du PHP | 331 Messages

23 sept. 2009, 15:51

Merci beaucoup, c'est parfait !
J'aurais bataillé un moment avant de le trouver tout seul ...

Merci aussi pour l'autre conseil, mais pourquoi est-ce déconseillé de se contenter de "<?" ? J'ai toujours fait comme ça et je n'ai jamais rencontré le moindre problème ...
Où est-ce un conseil de puriste simplement ?

Mammouth du PHP | 2937 Messages

23 sept. 2009, 16:01

Merci aussi pour l'autre conseil, mais pourquoi est-ce déconseillé de se contenter de "<?" ? J'ai toujours fait comme ça et je n'ai jamais rencontré le moindre problème ...
Où est-ce un conseil de puriste simplement ?
En utilisant la syntaxe complète de la balise d'ouverture PHP (<?php), ton script sera plus portable, d'autant plus que, d'une part, tu peux tomber sur un hébergeur qui a désactivé la directive short_open_tag et que, d'autre part, il y a un risque de conflit si tu veux utiliser PHP avec du XML, dont le prologue s'ouvre par <?xml et se ferme par ?> (comme les blocs de code PHP, à ceci près que le terme xml remplace php).

Autrement dit, ce n'est pas du purisme pur et dur. ;)

Eléphant du PHP | 331 Messages

23 sept. 2009, 18:04

merci pour m'avoir aider à trouver la solution à mon problème et le côté pédagogique dans les explications ! :wink:

Je vais revoir mes balises ouvrantes, c'est décidé !