热门标签 | 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']);
           }


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

推荐阅读
  • 在Qt框架中,信号与槽机制是一种独特的组件间通信方式。本文探讨了这一机制相较于传统的C风格回调函数所具有的优势,并分析了其潜在的不足之处。 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • 本文探讨了在Windows系统中运行Apache服务器时频繁出现崩溃的问题,并提供了多种可能的解决方案和建议。错误日志显示多个子进程因达到最大请求限制而退出。 ... [详细]
  • 项目风险管理策略与实践
    本文探讨了项目风险管理的关键环节,包括风险管理规划、风险识别、风险分析(定性和定量)、风险应对策略规划及风险控制。旨在通过系统的方法提升项目成功率,减少不确定因素对项目的影响。 ... [详细]
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • 本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ... [详细]
  • Android与JUnit集成测试实践
    本文探讨了如何在Android项目中集成JUnit进行单元测试,并详细介绍了修改AndroidManifest.xml文件以支持测试的方法。 ... [详细]
  • linux网络子系统分析(二)—— 协议栈分层框架的建立
    目录一、综述二、INET的初始化2.1INET接口注册2.2抽象实体的建立2.3代码细节分析2.3.1socket参数三、其他协议3.1PF_PACKET3.2P ... [详细]
  • 本文介绍了如何在两个Oracle数据库(假设为数据库A和数据库B)之间设置DBLink,以便能够从数据库A中直接访问和操作数据库B中的数据。文章详细描述了创建DBLink前的必要准备步骤以及具体的创建方法。 ... [详细]
  • 嵌套列表的扁平化处理
    本文介绍了一种方法,用于遍历嵌套列表中的每个元素。如果元素是整数,则将其添加到结果数组中;如果元素是一个列表,则递归地遍历这个列表。此方法特别适用于处理复杂数据结构中的嵌套列表。 ... [详细]
  • 本文档介绍了如何使用ESP32开发板在STA模式下实现与TCP服务器的通信,包括环境搭建、代码解析及实验步骤。 ... [详细]
  • 使用QT构建基础串口辅助工具
    本文详细介绍了如何利用QT框架创建一个简易的串口助手应用程序,包括项目的建立、界面设计与编程实现、运行测试以及最终的应用程序打包。 ... [详细]
  • 本文介绍了如何利用X_CORBA实现远程对象调用,并通过多个示例程序展示了其功能与应用,包括基础的Hello World示例、文件传输工具以及一个完整的聊天系统。 ... [详细]
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社区 版权所有