Bonjour,

Impossible de comprendre le comportement de ce preg_replace :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
echo preg_replace(  Array(
                                "/(?!<a.*?)(?!<.*?)(?<=\s|[[:punct:]])Text(?=\s|[[:punct:]])(?![^<>]*?>)(?=.*<\/a>)/",
                                "/(?!<a.*?)(?!<.*?)(?<=\s|[[:punct:]])Text(?=\s|[[:punct:]])(?![^<>]*?>)(?!.*<\/a>)/",
                                "/(?!<a.*?)(?!<.*?)(?<=\s|[[:punct:]])text(?=\s|[[:punct:]])(?![^<>]*?>)(?=.*<\/a>)/",
                                "/(?!<a.*?)(?!<.*?)(?<=\s|[[:punct:]])text(?=\s|[[:punct:]])(?![^<>]*?>)(?!.*<\/a>)/"
 
                            ),
                                Array(
                                "<dfn>Text</dfn>",
                                "<a href=\"index.php\"><dfn>Text</dfn></a>",
                                "<dfn>text</dfn>",
                                "<a href=\"index.php\"><dfn>text</dfn></a>"
                            ),
                            '<p>Text<br />text<br />Text<br />text<br />text</p>'
                            );
Cela me remplace bien tous les "Text" et presque tous les "text" SAUF UN.
Quand je dis SAUF UN, je parle de la première occurence "text" qui a été remplacé une fois (car il y a bien la balise <dfn> autour) mais le deuxieme remplacement ne s'est pas fait.

Auriez vous une idée?

Merci
Quelqu'un aurait une idée du pourquoi ?