par
Cyrano » 31 août 2011, 16:51
Hé, vous vous y prenez un peu à l'arrache.
Décomposez d'abord et ensuite appliquez en utiisant preg_replace.
D'abord les masques, tu as trois possibilités dont deux pour la balise ouvrante, une pour la fermante.
- Balise ouvrante version short_open_tag : « <? »
- Balise ouvrante normale : « <?php »
- Balise fermante : « ?> »
ensuite,le masque de remplacement dépend du type de balise, ouvrante ou fermante et de la présente ou non de parenthèses capturantes dans le masque de recherche. Vu la simplicité du truc, on se torturera pas les méninges outre mesure pour le remplacement.
On va créer deux masques, un pour l'ouvrante quelle que soit la version et un autre pour la fermante :
<?php
$opentag = "#<\?(?:php)?#i";
$closetag = "#\?>#";
$ducode_a_traiter = '<?php $mavar = "ma_valeur"; ?>';
$s_1 = preg_replace($opentag, '[php]', $ducode_a_traiter);
$s_2 = preg_replace($closetag, '
', $s_1);
echo("<pre>\n");
var_dump($s_2);
echo("</pre>\n");
// affiche à l'écran
// string(34) "
$mavar = "ma_valeur";
"[/php]
Le plus compliqué en réalité est le premier masque pour ne pas négliger les short_open_tag sans pour autant faire deux masques et ça empêcher du coup l'utilisation du "$1" en remplacement puisqu'il y manque le « php » du « <?php ».
Enjoy !

Hé, vous vous y prenez un peu à l'arrache.
Décomposez d'abord et ensuite appliquez en utiisant preg_replace.
D'abord les masques, tu as trois possibilités dont deux pour la balise ouvrante, une pour la fermante.
[list=1]
[*]Balise ouvrante version short_open_tag : « <? »
[*]Balise ouvrante normale : « <?php »
[*]Balise fermante : « ?> »[/list]
ensuite,le masque de remplacement dépend du type de balise, ouvrante ou fermante et de la présente ou non de parenthèses capturantes dans le masque de recherche. Vu la simplicité du truc, on se torturera pas les méninges outre mesure pour le remplacement.
On va créer deux masques, un pour l'ouvrante quelle que soit la version et un autre pour la fermante :
[php]<?php
$opentag = "#<\?(?:php)?#i";
$closetag = "#\?>#";
$ducode_a_traiter = '<?php $mavar = "ma_valeur"; ?>';
$s_1 = preg_replace($opentag, '[php]', $ducode_a_traiter);
$s_2 = preg_replace($closetag, '[/php]', $s_1);
echo("<pre>\n");
var_dump($s_2);
echo("</pre>\n");
// affiche à l'écran
// string(34) "[php] $mavar = "ma_valeur"; [/php]"[/php]
Le plus compliqué en réalité est le premier masque pour ne pas négliger les short_open_tag sans pour autant faire deux masques et ça empêcher du coup l'utilisation du "$1" en remplacement puisqu'il y manque le « php » du « <?php ».
Enjoy ! ;)