Bonjour,
J'essaie de faire un script sur une chaine de caractères.
Pour l'instant j'ai fais cela :
Page de test : https://www.zw3b.net/links-contents.php
Dans la fonction "parse", mon expression régulière n'est pas bonne.
Si dans le champ $text j'ajoute un "<pre>mon_code</pre>" l'expression régulière de "parse" s'arrête à la premiere balise de fermeture </pre>
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 <?php function parse($text) { $regex_pre = "#<((pre|PRE))>(.*?)<\/\\1>#s"; $regex_code = "#<((code|code))>(.*?)<\/\\1>#s"; $text = preg_replace_callback($regex_pre, 'parse_preFormated', $text, -1 , $count); $text = preg_replace_callback($regex_code, 'parse_codeFormated', $text, -1 , $count); return $text; } function parse_preFormated($value) { //echo '<pre>'.print_r($value,1).'</pre>'; $script_temp = $value[3]; $script_temp = utf8_encode($script_temp); $script = htmlentities($script_temp, ENT_QUOTES | ENT_SUBSTITUTE | ENT_XHTML, null, false); //$script = str_replace(array('/', '\\'), array('/', '\'), $script); $script = str_replace(array('/', '\\', '\'', '@'), array('\/', '\\', '\'', '\@'), $script); $script = '<pre class="code">'.$script.'</pre>'; return $script; } function parse_codeFormated($value) { //echo '<pre>'.print_r($value,1).'</pre>'; $script_temp = $value[3]; $script_temp = utf8_encode($script_temp); $script = htmlentities($script_temp, ENT_QUOTES | ENT_SUBSTITUTE | ENT_XHTML, null, false); $script = str_replace(array('/', '\\', '\'', '@'), array('\/', '\\', '\'', '\@'), $script); $script = '<code class="code">'.$script.'</code>'; return $script; } #................
Mon champ texte est celui-ci avec le code complet :
J'appelle comme cela :
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 #................ $text = '<p>mon texte de début</p>'."\n\n"; $text.= '<pre>'."\n\n"; $text.= '<?php'."\n\n"; $text.= '# Pour afficher un tableau PHP'."\n\n"; $text.= '$var[\'website\'] = 'domain.tld';'."\n"; $text.= '$var[\'weblink\'] = 'http://www.domain.tld';'."\n\n"; $text.= '# BUG ICI'."\n"; $text = 'echo <pre>\'.print_r($var,1).\'</pre>'."\n\n"; $text = 'echo 'My domain : '.$var[\'website\']."\n\n"; $text = '?>'."\n"; $text.= '</pre>'."\n\n"; $text.= '<p>mon texte de fin.</p>'."\n\n"; #................
Quelqu'un sait ? Qui a une solution ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #................ echo parse($text); ?>
Merci à vous.
Romain
J'ai fais une API si vous voulez plus en voirZW3B API Client v7.1.2 http://api.zw3b.fr/ - http://howto.zw3b.fr/developpement/php/zw3b-api-client
PCRE : https://www.php.net/manual/fr/refere...ern.syntax.php
Initiation aux expressions régulières en PHP de Guillaume Rossolini : https://g-rossolini.developpez.com/tutoriels/php/regex/Rien à voir mais peut sûrement vous interessez :
- J'ai écris un code PHP de "Visualisation HTML de vos rapports DMARC (rapport de conformité des serveurs mail destinataires de vos couriels)" -> PHPSource à installer sur votre serveur (enlevez le "s" de "php" pour avoir le rendu) - plus d'info ici
- Et des mini-scripts ".bash" (commentaire 32) pour dezipper facilement les fichiers "dmarc.zip" selon l'envie cf : contributor PengouinPdt.
Partager