1

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

4

1 回答 1

1

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

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

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

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

来自PHP.NET

s (PCRE_DOTALL) 如果设置了此修饰符,则模式中的点元字符匹配所有字符,包括换行符。没有它,换行符被排除在外。这个修饰符等价于 Perl 的 /s 修饰符。诸如 [^a] 之类的否定类始终匹配换行符,与此修饰符的设置无关。

于 2013-02-04T17:09:42.013 回答