Bonjour,

j'ai un fichier PHP me permettant de tester mon expression régulière.

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>test lexique</title>
<meta http-equiv="Content-Type" content="text/HTML; charset=utf-8" />
<meta http-equiv="Pragma" content="no-cache" />
<style type="text/css">
body {
	color:#CC0000;
	font-family:"Courier New", Courier, monospace;
}
span {
	color:#33CC66;
}
</style>
</head>
<body>
 
<?php
 
$terme = "AB";
 
$texte = "*** OUI ***<br />";
 
$texte .= "oui pour &gt;'AB'&lt;"."<br />";
$texte .= "oui pour &gt;'Ab&lt;"."<br />";
$texte .= "oui pour &gt;'aB &lt;"."<br />";
$texte .= "oui pour &gt;AB'&lt;"."<br />";
$texte .= "oui pour &gt; AB'&lt;"."<br />";
 
$texte .= "<br />";
 
$texte .= "oui pour &gt;’Ab’&lt;"."<br />";
$texte .= "oui pour &gt;’aB&lt;"."<br />";
$texte .= "oui pour &gt;’ab &lt;"."<br />";
$texte .= "oui pour &gt;AB’&lt;"."<br />";
$texte .= "oui pour &gt; AB’&lt;"."<br />";
 
$texte .= "<br />*** NON ***<br />";
 
$texte .= "non pour &gt;aAB&lt;"."<br />";
$texte .= "non pour &gt;aAB &lt;"."<br />";
$texte .= "non pour &gt;ABb&lt;"."<br />";
$texte .= "non pour &gt; ABb&lt;"."<br />";
 
$texte .= "<br />";
 
$texte .= "non pour &gt;éAB&lt;"."<br />";
$texte .= "non pour &gt;éAB &lt;"."<br />";
$texte .= "non pour &gt;ABé&lt;"."<br />";
$texte .= "non pour &gt;àAB&lt;"."<br />";
$texte .= "non pour &gt;ABà&lt;"."<br />";
$texte .= "non pour &gt;çABç&lt;"."<br />";
 
$motif = "`([\W\s])(".$terme.")([\W\s])`i";
$texte = preg_replace($motif, '$1<span>$2</span>$3', $texte);
 
echo $texte;
?>
</body>
</html>
sauf que mon motif ne fonctionne pas à tous les cas...

C'est à dire, qu'au lieu d'avoir :
*** OUI ***
oui pour >'AB'<
oui pour >'Ab<
oui pour >'aB <
oui pour >AB'<
oui pour > AB'<

oui pour >’Ab’<
oui pour >’aB<
oui pour >’ab <
oui pour >AB’<
oui pour > AB’<

*** NON ***
non pour >aAB<
non pour >aAB <
non pour >ABb<
non pour > ABb<

non pour >éAB<
non pour >éAB <
non pour >ABé<
non pour >àAB<
non pour >ABà<
non pour >çABç<
j'ai :
*** OUI ***
oui pour >'AB'<
oui pour >'Ab<
oui pour >'aB <
oui pour >AB'<
oui pour > AB'<

oui pour >’Ab’<
oui pour >’aB<
oui pour >’ab <
oui pour >AB’<
oui pour > AB’<

*** NON ***
non pour >aAB<
non pour >aAB <
non pour >ABb<
non pour > ABb<

non pour >éAB<
non pour >éAB <
non pour >ABé<
non pour >àAB<
non pour >ABà<
non pour >çABç<
Merci d'avance... car là j'avoue je ne vois pas pourquoi...