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


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

推荐阅读
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 2023 ARM嵌入式系统全国技术巡讲旨在分享ARM公司在半导体知识产权(IP)领域的最新进展。作为全球领先的IP提供商,ARM在嵌入式处理器市场占据主导地位,其产品广泛应用于90%以上的嵌入式设备中。此次巡讲将邀请来自ARM、飞思卡尔以及华清远见教育集团的行业专家,共同探讨当前嵌入式系统的前沿技术和应用。 ... [详细]
  • 本文介绍了如何在 DB2 环境中创建和删除数据库编目。创建编目是连接新数据库的必要步骤,涉及获取数据库连接信息、使用命令行工具进行配置,并验证连接的有效性。删除编目则用于移除不再需要的数据库连接。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • This guide provides a comprehensive step-by-step approach to successfully installing the MongoDB PHP driver on XAMPP for macOS, ensuring a smooth and efficient setup process. ... [详细]
  • 本文介绍了如何使用jQuery根据元素的类型(如复选框)和标签名(如段落)来获取DOM对象。这有助于更高效地操作网页中的特定元素。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
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社区 版权所有