Question

J'ai du mal à faire correspondre le contenu des balises php.

Actuellement, j'ai ce code, mais cela ne fonctionne pas pour moi:

<?php preg_match_all('/<\?php(.+)\?>/', $str, $inside_php); ?>

Je dois récupérer le contenu pour pouvoir faire d'autres choses avec eux, comme eval ().

Était-ce utile?

La solution

Arrêtez-vous là, vous ne voulez pas le faire de cette façon!

Vous pouvez utiliser l'extension tokenizer de PHP pour divise une chaîne en jetons, qui trouveront de manière fiable tout le code source PHP. Ensuite, vous pouvez faire la transformation que vous voulez avec les jetons. Les expressions régulières ne sont pas l'outil de ce travail (vous ne voulez pas éteindre le feu avec une cuillère, n'est-ce pas?)

$tokens = token_get_all($string);
foreach ($tokens as $token) {
    if (is_array($token)) {
        if (!in_array($token[0], array(T_INLINE_HTML, T_OPEN_TAG, T_CLOSE_TAG))) {
            echo $token[1];
        }
    } else {
        echo $token;
    }
}

Autres conseils

un point (ou un point) ne correspond pas aux nouvelles lignes:

([.\n\r]+)

faire ça ^^

<?php preg_match_all('/<\?php([.\n\r]+)\?>/', $str, $inside_php); ?>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top