dedecms v5.7搜索无法识别大写字母的解决方法

我们在使用dedecms v5.7进行英文搜索的时候,发现如果输入的是大写字母,dedecms将自动过虑掉,而只搜索小写的字母和数字,所以往往对于得到的搜索结果不是很令人满意,纠其原因发现dedecms中/include/helpers/filter.helper.php文件中正式表达式没有添加A-Z的规则,立即动手来解决这个小Bug吧!

例如:我们搜索“IThov”,但搜索结果中只保留了“hov”,过滤掉大写字母的截图如下:

首先下载你的/include/helpers/filter.helper.php文件到本地电脑,并用编辑器打开,找到程序的第169行,代码如下:

if(preg_match("/[^0-9a-z@#\.]/",$keyword[$i]))&">nbsp;

将其修改为:

if(preg_match("/[^0-9a-zA-Z@#\.]/",$keyword[$i])) 

完整的修改代码如下:

/**   *  过滤用于搜索的字符串   *   * @param     string  $keyword  关键词   * @return    string   */  if ( ! 
function_exists('FilterSearch'))  {      function FilterSearch($keyword)      {          global $cfg_soft_lang;          if($cfg_soft_lang=='utf-8')          {              $keyword = preg_replace("/[\"\r\n\t\$\\><']/", '', $keyword);              if($keyword != stripslashes($keyword))              {                  return '';              }              else              {                  return $keyword;              }          }          else          {              $restr = '';              for($i=0;isset($keyword[$i]);$i++)              {                  if(ord($keyword[$i]) > 0x80)                  {                      if(isset($keyword[$i+1]) && ord($keyword[$i+1]) > 0x40)                      {                          $restr .= $keyword[$i].$keyword[$i+1];                          $i++;                      }                      else                      {                          $restr .= ' ';                      }                  }                  else                  {                      if(preg_match("/[^0-9a-zA-Z@#\.]/",$keyword[$i]))  /* 将这里改为"if(preg_match("/[^0-9a-zA-Z@#\.]/",$keyword[$i]))"即可 */                      {                          $restr .= ' ';                      }                      else                      {                          $restr .= $keyword[$i];                      }                  }              }          }          return $restr;      }  } 

上传并覆盖原文件,重新测试搜索结果!

哈哈!终于正常啦!大家赶紧动手来解决这个小BUG吧!

时间: 2024-09-26 02:47:19

dedecms v5.7搜索无法识别大写字母的解决方法的相关文章

DedeCMS v5.1 首页幻灯显示不正常的解决方法_dedecms

在模板管理找到index.html,修改 复制代码 代码如下: {dede:arcfulllist att='3' row='5'} linkarr[[field:global name=autoindex/]] = "[field:arcurl/]"; picarr[[field:global name=autoindex/]] = "[field:litpic/]"; textarr[[field:global name=autoindex/]] = "

Win8.1无法搜索新更新错误代码8024402F的解决方法

  Win8.1无法搜索新更新错误代码8024402F的解决方法          我们在操作Win8.1系统时,有时用户需要手动搜索更新,不过最近有用户反馈搜索不到更新,并且服错错误代码8024402F,那么该怎么解决呢,针对该问题,小编给大家整理了一下解决方法. 该错误代码需要删除临时文件 1.按Windows+R 输入services.msc打开 找到Windows Update停止 2.打开此电脑C盘:WindowsSoftwareDistribution当中Download和DataS

Win8.1无法识别USB连接设备的解决方法

  小编这里要跟大家分享的是关于Win8.1无法识别USB连接设备的解决方法,据一些使用Win8.1系统的用户反映,当插上USB鼠标和键盘的时候,系统却无法正常识别. 故障现象: 电脑提示无法识别,进入设备管理器中发现错误提示:Unknown Device. 原因分析: 该问题通常是设备故障.USB接口或者系统Plug and Play服务被关闭所引起的. 解决方案: 1.首先依次点击"控制面板"---"管理工具"---"服务"; 2.开启 Pl

win7一直显示正在识别宽带连接的解决方法

  网络现在深入生活的方方面面,但是大家最害怕遇到的就是电脑连接宽带时遇到"正在识别",经常玩电脑的同学知道,遇到以上四个字眼就代表着网络连接不成功,所以根本没必要一直坐着傻等,一定要找到解决的方案,下面小编就为大家带来了"新鲜"简单的解决方法.这些方法只需要动动手指,不需要到处在网站找解决方案,也不需要急着检查是不是网络本身有问题,是不是很简单呢? win7一直显示正在识别宽带连接的解决方法: 第一种方法: 首先,在Win7电脑屏幕右下角的通知区域处找到一个小电脑

XP系统开机提示正常运行Windows所需的文件已被替换成无法识别的版本的解决方法

解决方法: 1.插入系统安装光盘,并运行sfc /scannow命令检测并修复可能受损坏和更改的系统文件. 2.在"开始→运行"对话框中键入"gpedit.msc",打开"本地计算机策略→计算机配置→管理模板→系统"窗口,找到"Windows文件保护",在右侧窗格中双击"设置Windows文件保护扫描"项,修改为"已禁用". 3.打开"注册表编辑器",找到[HKEY_

织梦DedeCMS V5.7添加导航条下拉子菜单方法

在dedecms5.5中官方模板里设置了下拉菜单的显示,但是之后的几个版本里面下拉菜单就没有再用在模板上了,早前几天,部落听到几个使用织梦DedeCMS V5.7模板问到这个问题,网上找了一下,有一个方法比较靠谱,大家可以参考一下. 首先你需要把DedeCMS5.6程序文件夹\dede\img里的mmenubg.gif(绿色背景图片,适用于绿色主题模板)或者DedeCMS5.5程 序文件夹\templets\images里的mmenubg.gif(蓝色背景图片,适用于蓝色主题模板)复制到Dede

DedeCMS V5.7安装后登录后台显示空白解决办法

原因分析 session_register,php5.4移除了这个函数,版本里说明,继续使用该函数会产生错误. if (!isset($_SESSION[$this->keepUserTypeTag]))改成这个方式就可以了 解决方法是: 找到include文件夹中的userlogin.class.php文件中把所有带有session_register的全部删除即可. @session_register下的所有语句屏蔽掉 function keepUser() { if($this->user

U盘不能被识别的几种解决方法

  首先我们先看一下数据线是不是完好,最好换一条好的试试.因为下面的方法解决不了这个看似问题而不是问题的问题. 现在我们看看软件方面的解决方法: 1:将U盘同系统的各个USB接口连接一下,频率在1分钟左右,不能识别就更换其他USB.中间最好是重启电脑后测试;这样判断是不是电脑的USB接口有没有故障; 2:将不同的已确认是好的USB设备(如:USB鼠标.U盘.键盘摄像头等只要是手里有的都可以)插入不能识别的接口中.这样是判断U盘与USB接口有没有故障; 3:重启进入bios.看看USB有没有被禁用

Dedecms织梦后台模块管理空白(不显示)解决方法

dedeCms后台模块管理中模块列表不显示的现象如下图: 解决办法: 如果之前有备份网站程序的话,直接在备份程序中按照以下途径找到以下文件夹:  代码如下 复制代码 data/module 复制里面所有文件后,粘贴到程序里面的相同的文件夹里面,覆盖所有文件. PS:如果没有备份网站,到dedecms官网下载一个与你的版本相同的源程序,按照上面的方法同样覆盖文件,然后更新缓存就可以了. dedeCms后台模块管理空白现象如下图: 解决办法: 这是因为你 安装模块,然后又卸载模块,卸载的时候选择了删