Coincidencia de contenidos dentro de las etiquetas php usando expresiones regulares

StackOverflow https://stackoverflow.com/questions/1405708

  •  05-07-2019
  •  | 
  •  

Pregunta

Tengo algunos problemas para hacer coincidir el contenido dentro de las etiquetas php.

Actualmente tengo este código, pero no funciona para mí:

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

Necesito recuperar el contenido para poder hacer otras cosas con ellos, como eval ().

¿Fue útil?

Solución

Detente allí mismo, ¡no quieres hacerlo de esta manera!

Puede utilizar la extensión de tokenizer de PHP para rompa una cadena en tokens, que encontrarán de manera confiable todo el código fuente de PHP. Entonces puedes hacer cualquier transformación que quieras con los tokens. Las expresiones regulares no son la herramienta para este trabajo (no quieres apagar el fuego con una cuchara, ¿verdad?)

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

Otros consejos

un punto (o punto) no coincide con las nuevas líneas:

([.\n\r]+)

haz eso ^^

<?php preg_match_all('/<\?php([.\n\r]+)\?>/', $str, $inside_php); ?>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top