php实现的替换敏感字符串类实例strfilter.class.php类文件如下:1234立即学习“PHP免费学习笔记(深入)”;56789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115/** string filter class* Date: 2013-01-09* Author: fdipzone* Ver: v1.0** Func:* public replace 替换非法字符* public check 检查是否含有非法字符* private protect_white_list 保护白名单* private resume_white_list 还原白名单* private getval 白名单 key转为value*/class StrFilter{ // class startPHP 8.5.5PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。下载private $_white_list = array();private $_black_list = array();private $_replacement = '*';private $_LTAG = '[[##';private $_RTAG = '##]]';/*** @param Array $white_list* @param Array $black_list* @param String $replacement*/public function __construct($white_list=array(), $black_list=array(), $replacement='*'){$this->_white_list = $white_list;$this->_black_list = $black_list;$this->_replacement = $replacement;}/** 替换非法字符* @param String $content 要替換的字符串* @return String 替換后的字符串*/public function replace($content){if(!isset($content) || $content==''){return '';}// protect white list$content = $this->protect_white_list($content);// replace black listif($this->_black_list){foreach($this->_black_list as $val){$content = str_replace($val, $this->_replacement, $content);}}// resume white list$content = $this->resume_white_list($content);return $content;}/** 检查是否含有非法自符* @param String $content 字符串* @return boolean*/public function check($content){if(!isset($content) || $content==''){return true;}// protect white list$content = $this->protect_white_list($content);// checkif($this->_black_list){foreach($this->_black_list as $val){if(strstr($content, $val)!=''){return false;}}}return true;}/** 保护白名单* @param String $content 字符串* @return String*/private function protect_white_list($content){if($this->_white_list){foreach($this->_white_list as $key=>$val){$content = str_replace($val, $this->_LTAG.$key.$this->_RTAG, $content);}}return $content;}/** 还原白名单* @param String $content* @return String*/private function resume_white_list($content){if($this->_white_list){$content = preg_replace_callback("/\[\[##(.*?)##\]\].*?/si", array($this, 'getval'), $content);}return $content;}/** 白名单 key还原为value* @param Array $matches 匹配white_list的key* @return String white_list val*/private function getval($matches){return isset($this->_white_list[$matches[1]])? $this->_white_list[$matches[1]] : ''; // key->val}} // class end?>
demo示例如下:
1234立即学习“PHP免费学习笔记(深入)”;5678910111213header("content-type:text/html;charset=utf8");require("StrFilter.class.php");$white = array('屌丝', '曹操');$black = array('屌', '操');$content = "我操,曹操你是屌丝,我屌你啊";$obj = new StrFilter($white, $black);echo $obj->replace($content);?>http://www.bkjia.com/PHPjc/882702.html www.bkjia.com true http://www.bkjia.com/PHPjc/882702.html TechArticle php实现的替换敏感字符串类实例 StrFilter.class.php类文件如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36...
