从html源删除php短标签

时间:2013-02-04 16:59:53

标签: php regex php-shorttags

我用curl解析一些html代码。某些网站的html源代码如下:

<div id="content">
    some words
</div>
<?    
    $box_social['dimensioni']="80";
        $box_vota=array();
    $box_vota["novideo"]='';
    $box_vota["nofoto"]='';
    $box_vota["id_articolo"]='1003691';
    include($_SERVER['DOCUMENT_ROOT']."/incs/box_social.php");    
?>
<div id="footer">
   some words
</div>

如何从html源删除php短标签?我需要

<div id="content">
    some words
</div>
<div id="footer">
   some words
</div>

我使用preg_replace('/<\?(.*?)\?>/','',$html);,但php短标记部分仍在那里。

1 个答案:

答案 0 :(得分:1)

此正则表达式符合您的情况:

$html = htmlspecialchars(preg_replace('/<\?([\w\W]*)\?>/','',$html));
$html = htmlspecialchars(preg_replace('/<\?(.*)\?>/s','',$html));

如果存在多个PHP块,这也匹配:

$html = htmlspecialchars(preg_replace('/<\?([^\?>]*)\?>/','',$html));

FROM PHP.NET

  

s(PCRE_DOTALL)       如果设置了此修饰符,则模式中的点元字符将匹配所有字符,包括换行符。没有它,新行就是   排除。此修饰符等效于Perl的/ s修饰符。一个   负面类如[^ a]总是匹配换行符,   独立于此修饰符的设置。