2009-09-10 5 views

Répondre

4

Arrêtez-vous là, vous ne voulez pas le faire de cette façon!

Vous pouvez utiliser le tokenizer extension of PHP pour décomposer une chaîne en jetons, ce qui permet de trouver de manière fiable tout le code source PHP. Ensuite, vous pouvez faire la transformation que vous voulez avec les jetons. Les expressions régulières ne sont pas l'outil pour ce travail (Vous ne voulez pas éteindre le feu avec une cuillère, pensez-vous?)

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

Ou bien vous avez déjà pris des tags courts en compte? Ou ouvrir les balises php dans les chaînes? – soulmerge

+0

Désolé, j'ai raté votre réponse. Merci beaucoup, c'est génial! –

+0

Theres un type sur la ligne 4, je crois que $ oken [0] devrait être $ jeton [0]. Encore une fois merci, cela m'a aidé à sortir grand temps! –

0

une période (ou point) ne correspond pas à de nouvelles lignes:

([.\n\r]+) 

le faire ^^

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

Cela ne fonctionne pas pour moi, mais merci quand même :) –

Questions connexes