JeuWeb - Crée ton jeu par navigateur

Version complète : REGEX un peu chiante
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Plop!

Je suis en train de coder les messages privés de mon jeu, et j'aurais besoin d'aide:

En fait, les utilisateurs peuvent ajouter des images qui seront sous la forme <img src="http://images.domaine.com/uploads/ xxx " [paramètres] /> . je souhaiterais passer ceci sous la forme:

<img src="http://images.domaine.com/uploads/ xxx ?mini=1" [paramètres] /> avec un lien vers l'image sans ?mini=1 si il n'y en a pas déjà autour...

Je sais, je suis relou, mais je suis aussi très mauvais en regex...

Merci tout le monde!

T.
Essaie
Code PHP :
<?php 
$string
= preg_replace('#<img (.*?)src="(http://images.domaine.com/uploads/.*?)"#', '<img $1src="$2?mini=1"', $string)

Tu te compliquais la vie parce que finalement le reste des paramètres du tag img on s'en fout Smile j'ai tout de même détecté les paramètres au début du tag histoire de les gérer
Merci beaucoup Smile

helàs ca ne marche pas Confused

je crois qu'il faut échapper quelques caractères, non?
(27-10-2009, 03:15 PM)Thedeejay a écrit : [ -> ]Merci beaucoup Smile

helàs ca ne marche pas Confused

je crois qu'il faut échapper quelques caractères, non?

oui...


Les métacaractères sont :
# ! ^ $ ( ) [ ] { } | ? + * . \

Pour utiliser un métacaractère dans une recherche, il faut l'échapper avec un antislash : \
Euh,beh oui.J'ai le même problème pour mon jeu ''Ether saga Online'' ...Quelqu'un peut m'aider là ?! Sad >Sad
à part les points du nom de domaine pas échappé (mais ça empêche pas de fonctionner... juste que t'auras un coup une mauvaise surprise) me semble que le reste est correct.

il fait pas ce que tu veux, là il ajoute systématiquement le '?mini=1'
le pattern ce serait plutot un truc du genre:
Code :
'#<img (.*?)src="(http://images\.domaine\.com/uploads/.*?)(?:\?mini=1)?"#'


edit:
Code PHP :
<?php 
$p
= '#<img (.*?)src="(http://images\.domaine\.com/uploads/.*?)(?:\?mini=1)?"(.*?)/>#';
$r = '<a href="$2"><img $1src="$2?mini=1"$3/></a>';

$s = preg_replace($p,$r,$s);
Essaie ça :
Code :
$... = preg_replace(
'#(?<=>)<img src="(http://[^" \n\r]+)" ([^<>/\r\n]+) />#',
'<a href="$1"><img src="$1?mini=1" $2 /></a>',
$...);

Par contre remarque de fond : l'attribut alt est obligatoire et doit être correctement renseigné.