2012-05-24 3 views
0

Я использую это, чтобы очистить HTML от тега шрифта:PHP регулярное выражение исключает

$html = '<font class="textmiddle" color="red">toto</font>' ; 
$clean = preg_replace('/<font[^>]*>/', '', $html) ; 
$clean = preg_replace('/<\/font>/', '', $clean) ; 

Он работает как шарм.

Но, когда HTML строка:

$html = '<font class="textmiddle" color="<%= color.importanttext %>">toto</font>' ; 

Тогда результат не ожидаемым:

">toto 
+1

Это главный кандидат на [эта ссылка] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) (кому-то приходилось) - но во всей серьезности, почему вы обрабатываете необработанный ASP-код в PHP? – DaveRandom

+0

Короче говоря, в то время как то, что вы хотите, можно сделать с помощью регулярного выражения, не делайте этого. Вместо этого напишите надежный надежный код, используя один из доступных синтаксических анализаторов xml/html. Проверьте это тоже: http://stackoverflow.com/questions/188414/best-xml-parser-for-php – FailedDev

+2

@FailedDev скорее http://stackoverflow.com/questions/3577641/best-methods-to-parse-html/3577662 # 3577662, потому что этот aint XML. В любом случае, это, вероятно, дубликат. – Gordon

ответ

1

Попробуйте

<?php 
    $html = '<font class="textmiddle" color="<%= color.importanttext %>">toto</font>' ; 
    $clean = preg_replace('/<font\s.*">/SimU', '', $html) ; 
    echo $clean; 
?> 

но обратите внимание, что вы получите

toto</font> 

в выходные.

+0

Спасибо! Это помогает мне отлично –