Corrispondenza dei contenuti all'interno dei tag php utilizzando regex
Domanda
Ho dei problemi ad abbinare i contenuti all'interno dei tag php.
Attualmente ho questo codice, ma non funziona per me:
<?php preg_match_all('/<\?php(.+)\?>/', $str, $inside_php); ?>
Devo recuperare i contenuti in modo da poter fare altre cose con loro, come eval ().
Soluzione
Smetti proprio lì, non vuoi farlo in questo modo!
Puoi utilizzare estensione tokenizer di PHP per spezzare una stringa in token, che troverà in modo affidabile tutto il codice sorgente PHP. Quindi puoi fare qualsiasi trasformazione tu voglia con i token. Le espressioni regolari non sono lo strumento per questo lavoro (non vuoi spegnere il fuoco con un cucchiaio, vero?)
$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;
}
}
Altri suggerimenti
un punto (o punto) non corrisponde a nuove righe:
([.\n\r]+)
fallo ^^
<?php preg_match_all('/<\?php([.\n\r]+)\?>/', $str, $inside_php); ?>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow