解析PHP留言本模块主要功能的函数说明(代码可实

一,敏感词处理
1,过滤敏感词
preg_match()函数用来在字符串中搜索所有与给定的正则表达式匹配的内容,如果存在则返回True,否则返回False。

语法:
int preg_match(string pattern,string subject[,array matches[,int flags]])
preg_match()函数参数说明如下:
pattern:
必要参数,需要匹配的正则表达式
subject:必要参数,输入的字符串
matches:可选参数。输出搜索结果的数组,例如$out[0]将包含与整个模式匹配的结果,$out[1]将包含与第一个捕获的括号中的子模式所匹配的结果,一次类推
flags:可选参数。标记:PREG_OFFSET_CAPTURE,对每个出现的匹配结果页同时返回其附属的字符串偏移量,PHP4.3.0后可用。

具体实现方法如下:
首先,应用file()函数读取存储子文本文件中的敏感词汇(每个敏感词独立成一行),并将共存储在数组$file_word中。
然后,应用for循环语句自动读取数组元素(敏感词),直接通过正则表达式检验用户提交的留言信息是否含有敏感词。

当用户发表留言信息后,提交李艳信息时,将留言信息与存储在数组中的敏感词进行对比,如果留言信息中含有敏感词,那么将弹出提示信息,否则留言信息发布成功。实现敏感词过滤关键代码如下:

复制代码 代码如下:


if (is_file("./filterwords.txt")){ //判断给定文件名是否为一个正常的文件
 $filter_word = file("filterwords.txt"); //把整个文件读入一个数组中
 $str=$_POST['content'];
 for($i=0;$i<count($filter_word);$i++){ //应用For循环语句对敏感词进行判断
    if(preg_match("https://www.jb51.net/".trim($filter_word[$i])."/i",$str)){  //应用正则表达式,判断传递的留言信息中是否含有敏感词
    echo "<script> alert('留言信息中包含敏感词!');history.back(-1);</script>";
    exit;
  }
 }
}


file()函数
array file (string filename [, int use_include_path [, resource context]])
和readfile()一样,只除了file()将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败file()返回FALSE。
2,添加敏感词到文本文件
php向文本文件中写入敏感词汇应用的主要函数
(1)is_writable()函数
is_writable()函数用于判断某文件是否存在,并且是否可写,如果满足上述条件则返回True,否则返回False。
语法:bool is_writable(string filename)参数filename用于指定文件的完整路径(c:/leaveMessage/filterwords.txt)或相对路径(相对应调用文件路径filterwords.txt),可写返回true,不可写返回false
示例:

复制代码 代码如下:


if(is_writable("filterwords.txt")){
 echo "可写文件";
} else {
 echo "不可写文件";
}


(2)fopen()函数
fopen()函数用于打开某文件,并返回该文件的标示指针。该文件可以是本地的也可以是远程的。
语法:resource fopen(string filename,string mode[,int use_include_path[,resource context]])
参数:
filename:
必要参数。用于指定要打开文件的本地或远程地址
mode:必要参数。用于指定要打开文件的模式use_include_path:可选参数。如果将该参数设置为True,PHP会尝试按照include_path标准包含路径中的每个指向去打开文件
context:可选参数。设置提高文件流性能的一些选项

mode文件打开模式参数说明:
'r' 只读方式打开,将文件指针指向文件头。
'r+' 读写方式打开,将文件指针指向文件头。 
'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 
'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 
'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 
'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 'x'创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则fopen()调用失败并返回FALSE,并生成一条E_WARNING级别的错误信息。如果文件不存在则尝试创建之。这和给底层的open(2)系统调用指定O_EXCL|O_CREAT标记是等价的。此选项被PHP4.3.2 以及以后的版本所支持,仅能用于本地文件。'x+'创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则fopen()调用失败并返回FALSE,并生成一条E_WARNING级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。

示例:fopen()函数以只读方式打开文件

复制代码 代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/7bfefcbc0d74e2d8b624d5f62ecadecd.html