php
  • regex
  • php-shorttags
  • 2013-02-04 80 views 1 likes 
    1

    我用curl解析了一些html代码。某些网站的html源代码如下:从html源码删除php短标签

    <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的短标签部分仍然存在。

    +0

    你提到你正在用curl来解析它吗?那么你通过网络服务器解析的东西呢?它不会以这种方式工作。 –

    +0

    如果您通过URL获取PHP代码,那么在服务器或服务器配置的另一端会出现严重的问题。如果这是第三方网站,那么您应该立即通知他们,因为这可能也是他们的安全问题。你不应该过滤这些东西,因为他们不应该让服务器首先输出它。 – SDC

    回答

    1

    此正则表达式你的情况相符:

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

    这也符合在PHP的一个以上的块有:

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

    FROM PHP.NET

    秒(PCRE_DOTALL) 如果设置了此修饰符,则模式中的点元字符与所有字符(包括)匹配g换行符。没有它,换行符是 排除。这个修饰符相当于Perl的/ s修饰符。 A 否定类如[^ a]总是匹配换行符 ,与此修饰符的设置无关。

    +0

    在哪里寻找它? – 2013-02-04 17:16:23

    +0

    代码工作正常,请参阅demo [here](http://phpfiddle.org/main/code/24u-rjc) – 2013-02-04 17:24:21

    相关问题