Regex kullanarak php etiketleri içinde Eşleştirme içeriği

2 Cevap php

Ben bazı sorun php etiketleri içindeki içeriği eşleşen var.

Şu anda bu kod var, ama benim için çalışmıyor:

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

Ben bu yüzden) (eval gibi, onlarla başka şeyler yapabilirsiniz içeriğini almak gerekir.

2 Cevap

Dur orada, bunu bu şekilde yapmak istemiyorum!

Sen güvenilir tüm PHP kaynak kodu bulacaksınız belirteçleri, içine bir dize kırmak için tokenizer extension of PHP kullanabilirsiniz. Sonra belirteçleri ile ne istersen dönüşüm yapabilirsiniz. Düzenli ifadeler (Sen bir kaşıkla yangın söndürmek istemiyorum do you?) Bu iş için bir araç değil

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

Bir dönem (veya nokta) yeni satırla eşleşmiyor:

([.\n\r]+)

bunu ^ ^

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