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 :
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 !..
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 . "'"; }
Y a t-il une syntaxe qui puisse me sauver ou est ce que ce n'est pas du tout la bonne méthode ?
Partager