Bonjour
Je poste mon problème ici parce que (bien que débutant en php) je pense qu'il peut se résoudre efficacement avec les Regex ..

Je cherche à remplacer un pattern dans une chaine par une expression incrémentée. En l'occurrence dans une chaine html je dois remplacer tous les id='lineN' (où N comporte de nombreux doublons répétés en séquences) par id='lineM' (où M n'en comporte aucun) :

id='line4' > id='line4'
id='line0' > id='line5'
id='line1' > id='line6'
id='line5' > id='line7'
id='line0' > id='line8'
id='line1' > id='line9'

Le but est juste de virer tous les doublons pour un loadHTML().

En cherchant j'ai trouvé preg_replace_callback (très futée !), mais dans mon cas ça n'irait pas, à cause de la portée des variables :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
$tmp = 0;
$out = preg_replace_callback ("|(id='line\d{1}')|", "increment", $str);
 
function increment($matches)
{
	return "id='line" . $tmp + 1 . "'";
}
La variable $tmp n'est pas accessible pour la fonction "increment" (et la variable $matches ne me sert à rien dans ce cas), mais dans l'idéal ce serait ça !..

Y a t-il une syntaxe qui puisse me sauver ou est ce que ce n'est pas du tout la bonne méthode ?