Bonjour,
Impossible de comprendre le comportement de ce preg_replace :
Cela me remplace bien tous les "Text" et presque tous les "text" SAUF UN.
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>' );
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 ?
Partager