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

 


Dernière réponse
Sujet : [PHP] Expressions régulières, comment ça marche?
Scoubidoo 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!

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Scoubidoo 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!
Freekill

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?

youdontcare

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 ?

skylight

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>.";

Freekill 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".
Freekill 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);

m@nou 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]

Scoubidoo ok merci
youdontcare 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.
Scoubidoo

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?

gatorette 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!)
youdontcare he bien tu rajoutes les caractères possibles de tes url à l'endroit où il checke l'url [a-z & co].
Scoubidoo 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.
Scoubidoo merchi
z0rglub

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

youdontcare * ç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]

z0rglub ah ok dans ce cas, i lfaut passer par des expression régulières et recensées toutes les possibilités d'extension
Scoubidoo mais si c .fr ou .com ou .net
je fais comment???
z0rglub 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
Scoubidoo 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?

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