conteúdo dentro de tags PHP usando regex correspondência
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 ().
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