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 ().

È stato utile?

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
scroll top