热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP对于建括号字符过滤的问题

有几百条数据类似*Oct1809:46:09:%NFPP_IP_GUARD-4-DOS_DETECTED:Host<IP60.12.174.45,MACNA,portGi2
有几百条数据 类似
*Oct 18 09:46:09: %NFPP_IP_GUARD-4-DOS_DETECTED: Host was detected.(2010-10-18 9:46:9)
   已经保持在数据库里面,结果运行一个查询页面后,显示的结果是只有

*Oct 18 09:46:09: %NFPP_IP_GUARD-4-DOS_DETECTED: Host was detected.(2010-10-18 9:46:9)


现在问题是怎么能够找到哪个过滤<>的函数??大家帮忙

8 个解决方案

#1


你输出结果的代码?

#2


在查询语句后面找str_replace或者正则表达式之类的语句

#3


输出时正则替换掉,数据库里的不变

#4



           //------------------------------------------------------------------------
           // Output the table with the results
           // Use an alternating background and color code the priority column
           //------------------------------------------------------------------------
           if(CEMDB == "ON") {
               require_once 'includes/CEMDB.class.php';
               $cemdb = new CEMDB($dbLink);
           }

    $color = "lighter";
       $today = date('Y-m-d');
       for($i=0; $i < count($result_array); $i++) {
           $row = $result_array[$i];
           if($color == "darker") {
               $color = "lighter";
           echo "";
           }
           else {
               $color = "darker";
           echo "";
           }

        // Checkboxes for export to Excel
        echo "";

        // SEQ Field
           if(defined('SEQ') && SEQ == TRUE) {
               if (!preg_match("/\d+/", $row['seq'])) {
                   list($id) = split(':', $row['msg']);
                   if(is_numeric($id)) {
                       echo "".$id."";
                   } else {
                       echo "N/A";
                   }
               } else {
                   echo "".$row['seq']."";
               }
           }

        echo "";
           echo $row['host']."";

        

        echo "            switch ($row['priority']) {
               case 'debug':
                   echo 'sev0';
                   break;
               case 'info':
                   echo 'sev1';
                   break;
               case 'notice':
                   echo 'sev2';
                   break;
               case 'warning':
                   echo 'sev3';
                   break;
               case 'err':
                   echo 'sev4';
                   break;
               case 'crit':
                   echo 'sev5';
                   break;
               case 'alert':
                   echo 'sev6';
                   break;
               case 'emerg':
                   echo 'sev7';
                   break;
           }
           echo "\">";
           echo $row['facility']."\n";

        // echo "".$row['fo']."";
           if(defined('SQZ_ENABLED') && SQZ_ENABLED == TRUE) {
               $pieces = explode(' ', $row['fo']);
               echo '';
               if ($pieces[0]!=$today) {
                   echo $pieces[0]." ";
               }
               echo $pieces[1];
               echo "\n";
               // echo "".$row['fo']."";
               $pieces = explode(' ', $row['lo']);
               echo '';
               if ($pieces[0]!=$today) {
                   echo $pieces[0]." ";
               }
               echo $pieces[1];
               echo "\n";
               // Counter row follows
               echo "".$row['counter']."";
           }
           /* END: Switched by BPK to allow filtering based on facility */


        /* BEGIN: Added by BPK to hide the date if it's the same as today
           echo "".$row['fo']."";
         */
           $pieces = explode(' ', $row['fo']);
           echo '';
           if ($pieces[0]!=$today) {
               echo $pieces[0]." ";
           }
           echo $pieces[1];
           echo "\n";
           echo '';
           $program = htmlspecialchars($row['program']);
           if (!empty($program)) {
               $pattern = '/^'.addcslashes($program, '.()[]/\\').'/';
               $replacement = ''.$program.'';
               $program = preg_replace($pattern, $replacement, $program);
           }
           if($row['program'] == $id) {
               $program = "Syslog";
           }
           echo $program;
           echo "\n";
      
        if (CISCO_TAG_PARSE ) {
            $row['msg'] = preg_replace('/\s:/', ':', $row['msg']);
            $row['msg'] = preg_replace('/.*(%.*?:.*)/', '$1', $row['msg']);
           }
           // CDUKES: 2009-06-18 - Added below to allow filtering on individual message pieces
           if(defined('MSG_EXPLODE') && MSG_EXPLODE == TRUE) {
               $explode_url = "";
               $pieces = explode(" ", $row['msg']);
               foreach($pieces as $value) {
            // had to add rtrim below for cisco messages - when searching, the : was not returning any results
               $explode_url .= "  ".$value."  ";
               }
           }
           // Original message:
           // 3852752: DRP/0/0/CPU0:Feb 4 20:12:36.098 EST5: SSHD_[65697]: %SECURITY-SSHD-3-ERR_GENERAL: Failed to get DSA public key
           // New message using regex above: .*(%.*?:.*):
           // SSHD_[65697]: %SECURITY-SSHD-3-ERR_GENERAL: Failed to get DSA public key
           if(CEMDB == "ON") {
           $data = $cemdb->lookup($row['msg']);
        }
           // BPK - this is where the revised version begins
           // CDUKES - BETA - FIX THIS
           $printed = false;
           if (CEMDB == "ON") {
               $data = $cemdb->lookup($row['msg']);
               if($data !== false) {
                   $info  =     "Name:"                    . $data[0];
                   $info .= "
Message: "                . $data[1];
                   $info .= "
Explanation: "            . $data[2];
                   $info .= "
Action: "                 . $data[3];
                   $info .= "
Record last updated on: " . $data[4];
                   $info = str_replace("\n", "", $info);
                   $info = htmlentities($info);
                // CDUKES: 2009-06-18 - Changed below for MSG_EXPLODE mod
                   ?>
                       
                                    if(defined('MSG_EXPLODE') && MSG_EXPLODE == TRUE) {
                ?>
                       
                                            echo "[CEMDB] ";
                   echo "$explode_url\n";
               } else {
                ?>
                       
                                            echo $row['$msg'];
                   ?>
                       
                       
            }
                    $printed = true;
               }

        }
           // if CEMDB off or row wasn't found, print it
           // this will prevent unnecessary popups and allow filtering via a link
           if (!$printed) { 
            $msg = htmlspecialchars($row['msg']);
               echo "";
               if ($row['count'] > 1) echo ''.$row['count'].' * ';
               // CDUKES: 2009-06-18 - Changed below for MSG_EXPLODE mod
               //                echo "$msg\n";
               if(defined('MSG_EXPLODE') && MSG_EXPLODE == TRUE) {
                   echo "$explode_url\n";
               } else {
#$msg = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $msg); # <-moved filter to db_insert.pl
                   echo "$msg\n";
               }
           }
           echo "\n";
       }
    ?>
            echo "\n";
       echo "\n";


这是代码,我试图屏蔽一些replace的命令,但好像不管用,

#5


应该是下面这段做的:
	if (CISCO_TAG_PARSE ) {
$row['msg'] = preg_replace('/\s:/', ':', $row['msg']);
$row['msg'] = preg_replace('/.*(%.*?:.*)/', '$1', $row['msg']);
}
// CDUKES: 2009-06-18 - Added below to allow filtering on individual message pieces
if(defined('MSG_EXPLODE') && MSG_EXPLODE == TRUE) {
$explode_url = "";
$pieces = explode(" ", $row['msg']);
foreach($pieces as $value) {
// had to add rtrim below for cisco messages - when searching, the : was not returning any results
$explode_url .= "  ".$value."  ";
}
}

你加一些调试输出语句确认一下

#6


无效。。。

#7


echo "";
注意这里,并不是数据库中取出的数据直接就是楼主说的那种效果,而是取出的数据重新组合而来的,也就是说数据库中的数据并不是*Oct 18 09:46:09: %NFPP_IP_GUARD-4-DOS_DETECTED: Host was detected.(2010-10-18 9:46:9)这种形式的

#8


自己解决了。问题出在
 if (CISCO_TAG_PARSE ) {
        $row['msg'] = preg_replace('/\s:/', ':', $row['msg']);
        $row['msg'] = preg_replace('/.*(%.*?:.*)/', '$1', $row['msg']);
    }


但我调试的时候把这几句都屏蔽了,还是出错,非常郁闷,后来想到一个笨办法,改成
  if (CISCO_TAG_PARSE ) 
        {
        $row['msg'] = preg_replace('/         $row['msg'] = preg_replace('/>/', ' ', $row['msg']); 
        $row['msg'] = preg_replace('/\s:/', ':', $row['msg']);
        $row['msg'] = preg_replace('/.*(%.*?:.*)/', '$1', $row['msg']);
           }


居然成功了 ,把<> 替换成空格就好了 

推荐阅读
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • 小程序wxs中的时间格式化以及格式化时间和date时间互转
    本文介绍了在小程序wxs中进行时间格式化操作的问题,并提供了解决方法。同时还介绍了格式化时间和date时间的互相转换的方法。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 使用圣杯布局模式实现网站首页的内容布局
    本文介绍了使用圣杯布局模式实现网站首页的内容布局的方法,包括HTML部分代码和实例。同时还提供了公司新闻、最新产品、关于我们、联系我们等页面的布局示例。商品展示区包括了车里子和农家生态土鸡蛋等产品的价格信息。 ... [详细]
  • 本文详细介绍了Python中正则表达式和re模块的使用方法。首先解释了转义符的作用,以及如何在字符串中包含特殊字符。然后介绍了re模块的功能和常用方法。通过学习本文,读者可以掌握正则表达式的基本概念和使用技巧,进一步提高Python编程能力。 ... [详细]
author-avatar
mobiledu2502855037
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有