php 剥离 iframe 和脚本标签(无 htmlentities())

发布于 2025-01-05 22:45:11 字数 1374 浏览 1 评论 0原文

我正在处理一个xml文件,有时会出现 “iframe” 和 “脚本” 我需要去掉标签,在我“xml-parse-it”之前,

我正在尝试一些正则表达式,但我弄错了! :(

测试字符串:

      $teststring = 'p><iframe src="http://www.facebook.com/plugins/like.php?href=abcdef&layout=standard&show_faces=false&width=450&action=like&colorscheme=dark&height=35" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:35px;" allowtransparency="true"></iframe></p>';

 //todo clean this up// found this function on net. //more legacy stufff
    $Rules = array(
         '@<script[^>]*?>.*?</script>@si', // Strip out javascript                
        '@&(cent|#162);@i', //   Cent 
        '@&(pound|#163);@i', //   Pound
        '@&(copy|#169);@i', //   Copyright
        '@&(reg|#174);@i', //   Registered
        '@&#(d+);@e', // Evaluate as php
---> PROBLEM--> '@&lt;iframe [^&lt;]&lt;.*?&lt;\/iframe&gt;@i',

    );

    $Replace = array(
         '',
        chr( 162 ),
        chr( 163 ),
        chr( 169 ),
        chr( 174 ),
        'chr()',
        '',

    );
        //expecting <p></p>
    $data = preg_replace( $Rules, $Replace, $teststring);


            echo $data;

I'm processing a xml file and sometimes there are
"iframes"
and
"script"
tags i need to get out , before i even 'xml-parse-it'

I'm trying some regular expressions but i'm getting it wrong ! :(

test string:

      $teststring = 'p><iframe src="http://www.facebook.com/plugins/like.php?href=abcdef&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=dark&amp;height=35" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:35px;" allowtransparency="true"></iframe></p>';

 //todo clean this up// found this function on net. //more legacy stufff
    $Rules = array(
         '@<script[^>]*?>.*?</script>@si', // Strip out javascript                
        '@&(cent|#162);@i', //   Cent 
        '@&(pound|#163);@i', //   Pound
        '@&(copy|#169);@i', //   Copyright
        '@&(reg|#174);@i', //   Registered
        '@&#(d+);@e', // Evaluate as php
---> PROBLEM--> '@<iframe [^<]<.*?<\/iframe>@i',

    );

    $Replace = array(
         '',
        chr( 162 ),
        chr( 163 ),
        chr( 169 ),
        chr( 174 ),
        'chr()',
        '',

    );
        //expecting <p></p>
    $data = preg_replace( $Rules, $Replace, $teststring);


            echo $data;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

徒留西风 2025-01-12 22:45:11

试试这个

'@<iframe(?:(?!>).)*>.*?<\/iframe>@i'

Just Try this

'@<iframe(?:(?!>).)*>.*?<\/iframe>@i'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文