Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3039 connectés 

  FORUM HardWare.fr
  Programmation

  [PHP] Expressions régulières, comment ça marche?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Expressions régulières, comment ça marche?

n°66680
Scoubidoo
In reblochon we trust
Posté le 21-10-2001 à 15:04:12  profilanswer
 

voilà j'aimerais faire une petite fonction
qui transforme <a href=unsite.com> en <a href=unsite.com target=_blank classe=page>.(unsite peut avoir plusieurs valeur)
Je crois qu'on peut faire ça avec les expressions régulières mais je comprends pas comment ça marche.
Qqun peut m'aider?

mood
Publicité
Posté le 21-10-2001 à 15:04:12  profilanswer
 

n°66707
z0rglub
Posté le 21-10-2001 à 17:52:44  profilanswer
 

moi je ferai un  
$chaine = "<a href=unsite.com>";
ereg_replace(".com",".com target=_blank classe=page", $chaine);
 
pas la peine d'utiliser des expressions régulières


---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com
n°66710
Scoubidoo
In reblochon we trust
Posté le 21-10-2001 à 18:12:41  profilanswer
 

mais si c .fr ou .com ou .net
je fais comment???

n°66711
z0rglub
Posté le 21-10-2001 à 18:15:19  profilanswer
 

ah ok dans ce cas, i lfaut passer par des expression régulières et recensées toutes les possibilités d'extension


---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com
n°66716
youdontcar​e
Posté le 21-10-2001 à 18:59:56  profilanswer
 

* ça ne sert à rien de passer par ereg_replace dans le cas de zorglub, str_replace est plus rapide et prévu pour.
 
* bon, un petit topo sur les regexp, ça va me rafraîchir la mémoire ... on va prendre un format fixe d'url histoire de simplifier:
<a href='http://www.url.com'>  
à remplacer par
<a href='http://www.url.com' target='_blank' class='page'>  
 
on utilise ereg_replace et on va faire simple. on va décomposer l'url en morceaux et insérer target='_blank' et class='page' au bon endroit.
ereg_replace prend 3 paramètres : l'expression régulière à rechercher, ce par quoi la remplacer, et la string à traiter. elle renvoit la string traitée.
 
on peut indiquer les 'morceaux' dans le premier paramètre et s'en servir dans le second. ici, les morceaux à trouver sont, dans l'ordre :
1) <a href='http://
2) l'url en elle-même
3) '>
on indique ces morceaux entre parenthèses et on les utilise dans la string de remplacement (second paramètre).
 
par ex,
 
ereg_replace("(<a href='http://)", "\\1 début de l'url" )
va remplacer la string en
<a href='http:// début de l'urlwww.url.com'>
dans ce cas, c'est tout simple, on n'utilise aucun caractère de contrôle, on indique juste la string brut de pomme telle qu'on la cherche. : <a href='http://
 
maintenant, on remplace l'url en elle-même. url simple, qui ne peut contenir ici que des lettres, chiffres, ou points.
pour chercher une lettre minuscule : [a-z]
pour chercher une lettre majuscule : [A-Z]
pour chercher un chiffre : [0-9]
pour chercher un point : [.]
pour chercher une lettre majuscule, ou minuscule, ou un chiffre, ou un point : [A-Za-z0-9.]
 
pour chercher 0 ou plusieurs lettres, chiffres, point on utilise '*' :
[A-Za-z0-9.]*
 
donc
 
ereg_replace("(<a href='http://)([A-Za-z0-9.]*)", "\\1\\2 milieu de l'url" )
va remplacer la string par  
 
<a href='http://www.url.com milieu de l'url'>
 
il ne reste plus qu'à identifier le guillement fermant et la balise fermante : pareil, brut de pomme : ('> )
 
ereg_replace("(<a href='http://)([A-Za-z0-9.]*)('> )", "\\1\\2 milieu de l'url\\3" )
va remplacer la string par  
 
<a href='http://www.url.com milieu de l'url'>
 
on a donc correctement identifié la balise.  
le troisième paramètre (\\3) est à gicler dans la string de remplacement. il sert dans la string de recherche à s'assurer qu'on est dans une balise, mais ici on doit :
* fermer l'url, donc rajouter le guillemet
* rajouter le target='_blank'
* fermer la balise
 
donc  
ereg_replace("(<a href='http://)([A-Za-z0-9.]*)('> )", "\\1\\2' target='_blank' class='blah'>" )
 
va remplacer la string par  
 
<a href='http://www.url.com' target='_blank' class='blah'>
 
voilà.
 
à noter que les regexps se comprennent mieux avec un max de pratique ...
 
// edit car qq bourdes ...

 

[edtdd]--Message édité par youdontcare--[/edtdd]

n°66719
z0rglub
Posté le 21-10-2001 à 19:06:08  profilanswer
 

youdontcare a écrit a écrit :

* ça ne sert à rien de passer par ereg_replace dans le cas de zorglub, str_replace est plus rapide et prévu pour.  




 
merci pour le tuyau, et pour le topo


---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com
n°66743
Scoubidoo
In reblochon we trust
Posté le 21-10-2001 à 20:01:56  profilanswer
 

merchi

n°66750
Scoubidoo
In reblochon we trust
Posté le 21-10-2001 à 20:56:10  profilanswer
 

youdontcare >
ton truc ça marche avec une url type:
http://www.renault.com
mais pas dans le cas:
http://shivash.multimania.com/Wind [...] u_BSOD.htm
c'est à dire quand on fait un lien vers une page précise.
tu sais comment on fait pour que ça prenne en compte ça.

n°66755
youdontcar​e
Posté le 21-10-2001 à 21:20:59  profilanswer
 

he bien tu rajoutes les caractères possibles de tes url à l'endroit où il checke l'url [a-z & co].

n°66764
gatorette
Posté le 21-10-2001 à 22:08:20  profilanswer
 

Voici un article qui m'a permis d'en apprendre un minimum : http://www.phpbuilder.com/columns/dario19990616.php3 (depuis j'ai tout oublié donc ne comptes pas sur moi!)


---------------
each day I don't die is cheating
mood
Publicité
Posté le 21-10-2001 à 22:08:20  profilanswer
 

n°66775
Scoubidoo
In reblochon we trust
Posté le 21-10-2001 à 22:57:57  profilanswer
 

youdontcare a écrit a écrit :

he bien tu rajoutes les caractères possibles de tes url à l'endroit où il checke l'url [a-z & co].  




j'ai du mal à comprendre comment ça marche, tu pourrais pas m'expliquer comment ça marche pour faire cette amélioration?

n°66778
youdontcar​e
Posté le 21-10-2001 à 23:13:00  profilanswer
 

comme je disais précédemment.
 
[a-z] matche une lettre minuscule.
[A-Z] une lettre majuscule.
[0-9] un chiffre.
[.] un point.
[A-Za-z0-9.] matche une lettre minuscule ou majuscule, ou un chiffre, ou un point.
 
donc [A-Za-z0-9./_] matche une lettre minuscule ou majuscule, ou un chiffre, ou un point, ou un slash, ou un underscore.
 
ça résoudra ton url (/windows/ecran_....). par contre je ne connais pas tous les caractères possibles d'une url, donc cherche voir.

n°66817
Scoubidoo
In reblochon we trust
Posté le 22-10-2001 à 11:05:54  profilanswer
 

ok merci

n°68118
m@nou
vu z&#039;avais pas vu
Posté le 29-10-2001 à 10:24:33  profilanswer
 

je sais c un peu vieux mais  
j'ai trouvé çà qui résume assez bien ;)
 
http://www.asp-php.net/asphp2/fr/t [...] regexp.asp
 
ou là pour javascript
 
http://www.asp-php.net/asphp2/fr/t [...] jvs_07.asp

 

[edtdd]--Message édité par m@nou--[/edtdd]


---------------
Mes photos,Feed-Back HA/V
n°68141
Freekill
Electron libre…
Posté le 29-10-2001 à 11:44:05  profilanswer
 

Je préfère preg_replace() :
 

Code :
  1. $link = "<A HREF=http://www.monsitepourri.com>";
  2. $formatedlink = preg_replace("/(^.*?)(\> )/si","\\1 target=_blank classe=page\\2",$link);

n°68143
Freekill
Electron libre…
Posté le 29-10-2001 à 11:48:35  profilanswer
 

Dans mon cas on se sert du ">" pour savoir où insérer les trucs en plus.
 
Il ne devrait donc pas y avoir de problème avec des url's "exotiques".

n°68592
skylight
Made in France.
Posté le 30-10-2001 à 20:23:17  profilanswer
 

Scoubidoo a écrit a écrit :

voilà j'aimerais faire une petite fonction
qui transforme <a href=unsite.com> en <a href=unsite.com target=_blank classe=page>.(unsite peut avoir plusieurs valeur)
Je crois qu'on peut faire ça avec les expressions régulières mais je comprends pas comment ça marche.
Qqun peut m'aider?  




 
moi je ferais  

Code :
  1. $url = 'unsite.com';
  2. $url_complete = "<a href=".$url." target=_blank classe=page>.";

n°68602
youdontcar​e
Posté le 30-10-2001 à 23:13:56  profilanswer
 

Freekill a écrit a écrit :

Dans mon cas on se sert du ">" pour savoir où insérer les trucs en plus.
 
Il ne devrait donc pas y avoir de problème avec des url's "exotiques".  



sympa ça, je connaissais pas. y'a moyen de le faire sans la syntaxe perl ?

n°68623
Freekill
Electron libre…
Posté le 31-10-2001 à 06:15:15  profilanswer
 

youdontcare a écrit a écrit :

sympa ça, je connaissais pas. y'a moyen de le faire sans la syntaxe perl ?  




 
Désolé, je suis un "php wannabie".
 
Tout ce que je connais à trait au php, je ne peux donc te répondre concernant Perl?

n°72435
Scoubidoo
In reblochon we trust
Posté le 15-11-2001 à 13:17:19  profilanswer
 

dernière question, j'ai trouvé un aut problème....
comment faire prendre en compte un url contenant & , ? et = pcq kan je les met tel kel , ça me fait un erreur...
Aidez moi!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [PHP] Expressions régulières, comment ça marche?

 

Sujets relatifs
[PHP] [ULTRA URGENT] arrondire un nombre[PHP] Aide pour finir mon guestbook
[PHP] J'ai une colle, le premier qui trouve ...[ PHP ] Formulaire + bdd
[PHP] Gestion d'images ??[PHP]combien coute une journee de dev?
Caracteres speciaux dans chaine de caractere PHP[php]Php et flash
[PHP] problème avec la requête DELETE FROM.[PHP]On pourrais m'expliker en detail les cookie et les seesions ...
Plus de sujets relatifs à : [PHP] Expressions régulières, comment ça marche?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR