Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/11/2008, à 15:38

Skippy le Grand Gourou

[Résolu] I don't know regular expressions ! :'(

Salut,

Malheureusement, je ne suis pas le ninja d'xkcdsad

Or justement j'en ai besoin, et j'arrive pas à faire ce que je veux.

Problématique : j'ai une chaîne (extraite d'une base de données par un script PHP) qui peut contenir des URLs. Lorsque j'affiche cette chaîne sur une page web, je voudrais remplacer les URLs par des liens cliquables. A priori, la solution serait donc d'utiliser la fonction preg_replace.

Le hic, c'est donc que je ne maîtrise pas les expressions rationnelles. Mon champ peut être de plusieurs types :

[vide]
*
* http://une_url
*, http://une_url, *
* http://une_url *

Donc le champ à reconnaître :
- commence par « http: »
- se termine par : une espace, une virgule ou une fin de ligne
- est « répétable »

Pour l'instant j'en suis à :

/(http:.*[, ])+?/

Malheureusement le point d'interrogation ne fait pas ce qu'il devrait faire (si j'ai bien compris), à savoir rechercher la plus petite chaîne possible, et donc si j'ai deux URLs il englobe les deux… Quelqu'un pourrait me donner un coup de pouce ? Merci. smile

Edit : Ah, pardon, c'est mieux comme ça :

/(http:.*?[, ])+/

On va voir si ça me suffit.

Dernière modification par Skippy le Grand Gourou (Le 13/11/2008, à 16:20)

Hors ligne

#2 Le 13/11/2008, à 15:52

iuchiban

Re : [Résolu] I don't know regular expressions ! :'(

désolé, I am Not a Ninja
Mais je suis sûr qu'un ninja passera par là wink


C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.

Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.

Hors ligne

#3 Le 13/11/2008, à 16:19

Skippy le Grand Gourou

Re : [Résolu] I don't know regular expressions ! :'(

Ben en fait ça a l'air de marcher pas trop mal avec :

preg_replace('/(http:.*?([,\s]|\z))+/','<a href="$1">link</a>',$mon_champ)

Donc les ninjas peuvent retourner à leur méditation. wink

Hors ligne

#4 Le 13/11/2008, à 21:46

Yannick_LM

Re : [Résolu] I don't know regular expressions ! :'(

<troll>
Sauf que le Ninja, il utilise Perl, et pas PHP
</troll>


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

#5 Le 14/11/2008, à 09:38

iuchiban

Re : [Résolu] I don't know regular expressions ! :'(

Yannick_LM a écrit :

<troll>
Sauf que le Ninja, il utilise Perl, et pas PHP
</troll>

<troll>
Sauf que python est largement plus puissant puisqu'on peut faire un
import antigravity
http://xkcd.com/353/
ou donner une âme grâce à
import soul
http://xkcd.com/413/
</troll>
big_smile


C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.

Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.

Hors ligne