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


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

推荐阅读
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文详细介绍了C语言中链表的两种动态创建方法——头插法和尾插法,包括具体的实现代码和运行示例。通过这些内容,读者可以更好地理解和掌握链表的基本操作。 ... [详细]
  • Ihaveastringwithquotesaroundthepathasfollows:我在路径周围有一个带引号的字符串,如下所示:C:\ProgramFiles(x ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
  • 本文介绍如何在Node.js环境中执行Powershell脚本,并详细说明了通过子进程处理命令输出和错误信息的具体步骤。 ... [详细]
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
  • 本文将深入探讨如何在不依赖第三方库的情况下,使用 React 处理表单输入和验证。我们将介绍一种高效且灵活的方法,涵盖表单提交、输入验证及错误处理等关键功能。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文详细介绍了 iBatis.NET 中的 Iterate 元素,它用于遍历集合并重复生成每个项目的主体内容。通过该元素,可以实现类似于 foreach 的功能,尽管 iBatis.NET 并未直接提供 foreach 标签。 ... [详细]
  • 解决Anaconda安装TensorFlow时遇到的TensorBoard版本问题
    本文介绍了在使用Anaconda安装TensorFlow时遇到的“Could not find a version that satisfies the requirement tensorboard”错误,并提供详细的解决方案,包括创建虚拟环境和配置PyCharm项目。 ... [详细]
  • 本文由杨勇和思远于2012年12月27日撰写,主要探讨了如何使用PHP进行网页内容抓取,特别是针对字符较多的网站。文章详细介绍了正则表达式失效的原因,并提供了优化方法,同时展示了如何抓取淘宝服饰栏、天气信息以及IP地址对应的地理位置。 ... [详细]
  • 在项目部署后,Node.js 进程可能会遇到不可预见的错误并崩溃。为了及时通知开发人员进行问题排查,我们可以利用 nodemailer 插件来发送邮件提醒。本文将详细介绍如何配置和使用 nodemailer 实现这一功能。 ... [详细]
  • 云函数与数据库API实现增删查改的对比
    本文将深入探讨使用云函数和数据库API实现数据操作(增删查改)的不同方法,通过详细的代码示例帮助读者更好地理解和掌握这些技术。文章不仅提供代码实现,还解释了每种方法的特点和适用场景。 ... [详细]
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社区 版权所有