Dans la page : http://php.developpez.com/sources/?page=regexp
Vous donner la partie :
Le code est faux , pour le rendre valide il faut :
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 $t = preg_replace_callback("![(list|liste)s*=?s*([1IaA]?)]s*(:?[*](.*)s*)+[/\1]!iUs", create_function('$matches', "switch($matches[2]) { case '1': $result = '<ol class="un">'; break; case 'i': $result = '<ol class="ii">'; break; case 'I': $result = '<ol class="II">'; break; case 'a': $result = '<ol class="aa">'; break; case 'A': $result = '<ol class="AA">'; break; case '': $result = '<ul>'; break; } for($i = 3; $i < count($matches) - 1; $i++) { $result.= '<li>' . $matches[$i] . '</li>'; } return $result . '</' . substr($result, 1, 2) . 'l>';"), $t);
Se sont 2 erreurs bêtes :
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 $txt = preg_replace_callback("#\[(list|liste)s*=?s*([1IaA]?)\]s*(:?[*](.*)s*)+\[/\1\]#iUs", create_function('$matches', "switch(\$matches[2]) { case '1': \$result = '<ol class=\"un\">'; break; case 'i': \$result = '<ol class=\"ii\">'; break; case 'I': \$result = '<ol class=\"II\">'; break; case 'a': \$result = '<ol class=\"aa\">'; break; case 'A': \$result = '<ol class=\"AA\">'; break; case '': \$result = '<ul>'; break; } for(\$i = 3; \$i < count(\$matches) - 1; \$i++) { \$result .= '<li>' . \$matches[\$i] . '</li>'; } return \$result . '</' . substr(\$result, 1, 2) . 'l>';"), $txt);
- les " qui ne sont pas backslaché
- les [] du début dans le regex qui ne le sont pas aussi.
Edition :
le regex des titre est faux aussi :
au lieu de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part "![(h|title|titre)s*=?s*([2-4])](.+)[/\1[2-7]?]!iU"
Code : Sélectionner tout - Visualiser dans une fenêtre à part '#\[(h|title|titre)\s*=?\s*([1-4])\](.+)\[/\\1(?:\\2)?\]#i'
Partager