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] |