2013-02-13 5 views
0

Je tente de remplacer les balises html qui se trouvent entre les balises pré. Voilà ce que je veux faire:balises preg_replace entre balises

$str = '<pre><div>Get<p>rid</p> of html tags</div></pre>'; 
$str = preg_replace('#(<pre.*?>)/<[^<>]+>/(</pre>)#', '$1$2', $str); 
echo $str; 

Il devrait responed avec, « Débarrassez-vous des balises HTML » dans les balises pré

Je sais pertinemment que,

$str = preg_replace('#(<pre.*?>).*?(</pre>)#', '$1$2', $str); 

œuvres , mais répond avec des pré-tags vides.

J'ai juste besoin de retirer toutes les balises html entre les balises pré.

Répondre

3

Voilà comment je le ferais:

$str = preg_replace_callback("#(<pre[^>]*>).*?</pre>#is",function($m) { 
    return $m[1].strip_tags($m[0])."</pre>"; 
},$str); 
+0

Merci! J'aurais aimé venir d'ici plus tôt, cela m'aurait sauvé 5 heures: D – user2067005

0
$str = '<pre><div>Get<p>rid</p> of html tags</div></pre>'; 
if(preg_match("/<pre>(.+?)<\/pre>/i", $str,$res)) 
{ 
    $str=strip_tags($res[1]); 
} 
echo $str; 
Questions connexes