Pergunta

Eu tenho alguns problemas em corresponder o conteúdo dentro de tags php.

Atualmente eu tenho esse código, mas ele não está funcionando para mim:

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

Eu preciso recuperar o conteúdo para que eu possa fazer outras coisas com eles, como eval ().

Foi útil?

Solução

parar ali, você não quer fazê-lo desta maneira!

Você pode usar o tokenizer extensão do PHP para quebrar uma string em tokens, que vai encontrar de forma confiável todo o código fonte PHP. Em seguida, você pode fazer o transformação que quiser com os tokens. As expressões regulares não são a ferramenta para este trabalho (Você não quer apagar o fogo com uma colher, não é?)

$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;
    }
}

Outras dicas

um período (ou ponto) não coincide com novas linhas:

([.\n\r]+)

fazer isso ^^

<?php preg_match_all('/<\?php([.\n\r]+)\?>/', $str, $inside_php); ?>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top