Bonjour ,

J'ai un certain nombre de liens dans une page, de type flux xml ou csv ou html peu importe, je souhaiterais traiter uniquement les liens qui ne font pas directement référence à une image.

J'ai déjà commencé à créer une regex mais je bloc sur un point :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
$regex = '#http(.*)([^jpg|gif|png]*)#i';
$replace = "http://www.mondomaine.com/test.php?redirect=$0";
 
$contenu = "
http://www.domaine.com/article/blabla.php?ids=1&idc=2<br>
http://www.domaine.com/image/bla-bla.jpg<br><br>
 
http://www.domaine.com/article/bla-bla.jpg<br>
http://www.domaine.com/image/blabla.php?ids=1&idc=2<br>";
 
echo preg_replace($regex, $replace, $contenu);
Le resultat me donne ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
http://www.mondomaine.com/test.php?redirect=http://www.domaine.com/article/blabla.php?ids=1&idc=2
http://www.domaine.com/image/bla-bla.jpg
 
http://www.mondomaine.com/test.php?redirect=http://www.domaine.com/article/bla-bla.jpg
http://www.domaine.com/image/blabla.php?ids=1&idc=2
Sur les 2 premières liens ça marche mais sur les 2 autres liens que j'ai volontairement inversés pour verifier tous les cas de figure ça modifie les mauvais liens

Mon but est de créer une regex qui modifierait un ensemble de liens commençant par http mais ne se terminant pas par jpg ou gif ou png.

Pouvez vous m'aider ou me donner des pistes à suivre, j'ai déjà usé tous les tutoriels, dans le principe je comprend les regex mais dans la pratique c'est vraiment autre chose

Merci d'avance