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

ggdw 2010-10-18 10:09:57
有几百条数据 类似
*Oct 18 09:46:09: %NFPP_IP_GUARD-4-DOS_DETECTED: Host<IP=60.12.174.45,MAC=N/A,port=Gi2/13,VLAN=N/A> 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)


现在问题是怎么能够找到哪个过滤<>的函数??大家帮忙
...全文
340 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ggdw 2010-10-19
  • 打赏
  • 举报
回复
自己解决了。问题出在
 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']);
$row['msg'] = preg_replace('/>/', ' ', $row['msg']);
$row['msg'] = preg_replace('/\s:/', ':', $row['msg']);
$row['msg'] = preg_replace('/.*(%.*?:.*)/', '$1', $row['msg']);
}


居然成功了 ,把<> 替换成空格就好了
ggdw 2010-10-18
  • 打赏
  • 举报
回复
无效。。。
CunningBoy 2010-10-18
  • 打赏
  • 举报
回复
应该是下面这段做的:
	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 .= " <a href=\"".$_SERVER["PHP_SELF"]."?msg1=".urlencode(rtrim($value,":")) . $ParamsGET."\"> ".$value." </a> ";
}
}

你加一些调试输出语句确认一下
ggdw 2010-10-18
  • 打赏
  • 举报
回复
<?php
//------------------------------------------------------------------------
// 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 "<tr class=\"$color\" bgcolor=\"".LIGHT_COLOR."\">";
}
else {
$color = "darker";
echo "<tr class=\"$color\" bgcolor=\"".DARK_COLOR."\">";
}

// Checkboxes for export to Excel
echo "<td><input type='checkbox' name='dbid[]' value=".$row['id']."></td>";

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

echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?excludeHost=0&host[]=".$row['host']."&".$hostParamsGET."\">";
echo $row['host']."</a></td>";



echo "<td class=\"";
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 "\"><a href=\"".$_SERVER['PHP_SELF']."?excludeFacility=0&facility[]=".$row['facility']."&".$facilityParamsGET."\">";
echo $row['facility']."</a></td>\n";

// echo "<td>".$row['fo']."</td>";
if(defined('SQZ_ENABLED') && SQZ_ENABLED == TRUE) {
$pieces = explode(' ', $row['fo']);
echo '<td>';
if ($pieces[0]!=$today) {
echo $pieces[0]." ";
}
echo $pieces[1];
echo "</td>\n";
// echo "<td>".$row['fo']."</td>";
$pieces = explode(' ', $row['lo']);
echo '<td>';
if ($pieces[0]!=$today) {
echo $pieces[0]." ";
}
echo $pieces[1];
echo "</td>\n";
// Counter row follows
echo "<td>".$row['counter']."</td>";
}
/* 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 "<td>".$row['fo']."</td>";
*/
$pieces = explode(' ', $row['fo']);
echo '<td>';
if ($pieces[0]!=$today) {
echo $pieces[0]." ";
}
echo $pieces[1];
echo "</td>\n";
echo '<td>';
$program = htmlspecialchars($row['program']);
if (!empty($program)) {
$pattern = '/^'.addcslashes($program, '.()[]/\\').'/';
$replacement = '<a href="'.$_SERVER['PHP_SELF'].'?excludeProgram=0&program[]='.$program.'&'.$programParamsGET.'">'.$program.'</a>';
$program = preg_replace($pattern, $replacement, $program);
}
if($row['program'] == $id) {
$program = "Syslog";
}
echo $program;
echo "</td>\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 .= " <a href=\"".$_SERVER["PHP_SELF"]."?msg1=".urlencode(rtrim($value,":")) . $ParamsGET."\"> ".$value." </a> ";
}
}
// 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 = "<b>Name:</b>" . $data[0];
$info .= "<br><b>Message:</b> " . $data[1];
$info .= "<br><b>Explanation:</b> " . $data[2];
$info .= "<br><b>Action:</b> " . $data[3];
$info .= "<br><b>Record last updated on:</b> " . $data[4];
$info = str_replace("\n", "", $info);
$info = htmlentities($info);
// CDUKES: 2009-06-18 - Changed below for MSG_EXPLODE mod
?>
<th align="left">
<?php
if(defined('MSG_EXPLODE') && MSG_EXPLODE == TRUE) {
?>
<A href="#" onmouseover="overlib('<TABLE border=1 cellspacing=0 cellpadding=0 width=100%><TR><TD class=tooltip><?php echo $info?></TD></TR></TABLE>');" onmouseout=nd(); name ="spacer" >
<?php
echo "[CEMDB] ";
echo "</A>$explode_url</td></th>\n";
} else {
?>
<A href="#" onmouseover="overlib('<TABLE border=1 cellspacing=0 cellpadding=0 width=100%><TR><TD class=tooltip><?php echo $info?></TD></TR></TABLE>');" onmouseout=nd(); name ="spacer" >
<?php
echo $row['$msg'];
?></A>
</th>
<?php

}
$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 "<td>";
if ($row['count'] > 1) echo '<b>'.$row['count'].' *</b> ';
// CDUKES: 2009-06-18 - Changed below for MSG_EXPLODE mod
// echo "$msg</td>\n";
if(defined('MSG_EXPLODE') && MSG_EXPLODE == TRUE) {
echo "$explode_url</td>\n";
} else {
#$msg = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $msg); # <-moved filter to db_insert.pl
echo "$msg</td>\n";
}
}
echo "</tr>\n";
}
?>
<?php
echo "</FORM>\n";
echo "</table>\n";


这是代码,我试图屏蔽一些replace的命令,但好像不管用,
fxs_2008 2010-10-18
  • 打赏
  • 举报
回复
输出时正则替换掉,数据库里的不变
CunningBoy 2010-10-18
  • 打赏
  • 举报
回复
在查询语句后面找str_replace或者正则表达式之类的语句
heyli 2010-10-18
  • 打赏
  • 举报
回复
你输出结果的代码?
kyzy_yy_pm 2010-10-18
  • 打赏
  • 举报
回复
echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?excludeHost=0&host[]=".$row['host']."&".$hostParamsGET."\">";
注意这里,并不是数据库中取出的数据直接就是楼主说的那种效果,而是取出的数据重新组合而来的,也就是说数据库中的数据并不是*Oct 18 09:46:09: %NFPP_IP_GUARD-4-DOS_DETECTED: Host<IP=60.12.174.45,MAC=N/A,port=Gi2/13,VLAN=N/A> was detected.(2010-10-18 9:46:9)这种形式的
用于windows下面的vim编辑器。 给喜欢vim的人使用。详细如下: 好吧,详细点,这里写出一些基本的命令: 【什么是vi】 vi就是linux命令行下的最著名的编辑器之一,(编辑器就是类似windows记事本的功能,不过vi功能比记事本强大无限倍!^_^),现在实际使用的都是vim,它是vi的改进版本,所以现在的vi基本上就是vim了。 【vi能做什么】 第一个功能不用多说,vi可以编辑文本文件。至于其他的功能,多得无法列举,我只说我所知的一些典型的功能应用: (1)编辑文本文件 (2)方便地阅读程序源代码 (3)当文件目录浏览器来用 (4)提供编程、调试环境 (5)利用vi执行一些脚本文件(vi有自己的脚本文件语法) (x)等等等等...... 【vi的操作模式】   vi具有两种基本模式,为输入模式(或插入模式、编辑模式)和指令模式(或命令模式)。输入模式下输入字符,文本就会显示在屏幕上;而指令模式下输入字符就解释为一个输入命令并执行,而不会显示相应的字符。理解指令模式最简单方式就是想象平时剪切、复制以及粘贴数据时所发生的情况。 使用[Esc]键可以停止当前操作(插入或者命令)重新回到指令模式,准备接受新的指令。如果本来就在指令模式下面,将会响铃一下。 【最基本的使用】 这里提供了使用vi得最基本的操作,能够实现大多数的编辑目的。如果你肯花几分钟把“最基本的使用”的内容都实践一下,那么你至少可以独立地在vim中朝你想要得方向“前进”了。如果你不想学习,那么就把它当作一个“字典”吧。 *用vi打开一个文件: 输入“vi filename”. 这里,filename就是你要打开的文件的名字,默认打开文件后vi处于指令模式。 *进入编辑模式编辑打开的文件: 输入“i”. 或输入“a”. 进入编辑模式后,你可以直接敲入想要输入的字符到文件,两者的区别是i在当前字符前面开始插入,a在当前字符后面开始插入。 *退出编辑模式: 输入“[Esc]”. 这样,将返回指令模式,准备接收你要传达给vi的指令并执行,如果之前已经在指令模式下,那么系统将响铃提醒一下。 **以下命令都是在命令模式下进行: *撤销修改: 输入“u”. 这里,相比以前的vi来说,vim支持多步撤销。 *恢复修改: 输入“[Ctrl]r”. 这里,和撤销命令相反,是撤销的撤销,也可多步。 *复制行到剪切板: 输入“yy”. *复制选定内容到剪切板: (1)输入“v”。 (2)按方向键将高亮选择的内容。 (3)输入“y”。 这里,开始输入v使vi临时进入了一个"选择模式",输入方向键可以选择,输入y将选择的内容复制剪切板。 *删除行: 输入“dd”. 注意,vi的删除等价于剪切,删除的内容会保存到剪切板中。 *删除选定内容: (1)输入“v”。 (2)按方向键将高亮选择的内容。 (3)输入“d”。 这里,开始输入v使vi临时进入了一个“选择模式”,输入方向键可以选择,输入d将选择的内容删除。 *粘贴: 输入“p”. 这样会将剪切板的内容粘贴到光标位置或者光标下一行。 *查找字符并定位到第一个匹配处: 输入“/character”. 这里character是待查找的字符,只要先输入/,再输入待查字符,最后回车即可定位到第一个匹配的字符处。 *定位到匹配查找的下一个字符处: 输入“n”. *定位到匹配查找的上一个字符处: 输入“N”. *保存文件: 输入“:w”. 注意w前面的':',输入':'之后,vim会将':'之后的输入解释为待执行的指令。 *退出: 输入“:q”. 这里,如果文件没有保存,将提示无法退出,除非你强制退出,不保存文件,或者保存退出。 *强制退出: 输入“:q!”. *保存退出: 输入“:wq”. 或输入“ZZ”. *察看帮助 输入":help". ** 另外还有一个简易的教程: 输入命令:vimtutor.

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧