JeuWeb - Crée ton jeu par navigateur
REGEX un peu chiante - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : REGEX un peu chiante (/showthread.php?tid=4425)



REGEX un peu chiante - Thedeejay - 27-10-2009

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.


RE: REGEX un peu chiante - naholyr - 27-10-2009

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


RE: REGEX un peu chiante - Thedeejay - 27-10-2009

Merci beaucoup Smile

helàs ca ne marche pas Confused

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


RE: REGEX un peu chiante - php_addict - 27-10-2009

(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 : \


RE: REGEX un peu chiante - Argonites - 27-10-2009

Euh,beh oui.J'ai le même problème pour mon jeu ''Ether saga Online'' ...Quelqu'un peut m'aider là ?! Sad >Sad


RE: REGEX un peu chiante - wild-D - 27-10-2009

à 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);



RE: REGEX un peu chiante - QuentinC - 27-10-2009

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é.