亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

解析PHP留言本模塊主要功能的函數說明(代碼可實現)

2020-03-22 17:37:40
字體:
來源:轉載
供稿:網友
一,敏感詞處理
1,過濾敏感詞
preg_match()函數用來在字符串中搜索所有與給定的html' target='_blank'>正則表達式匹配的內容,如果存在則返回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("/".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()函數以只讀方式打開文件
復制代碼 代碼如下:
?php
$fp=fopen("filterwords.txt","r");
?

(3)fseek()函數
fseek()函數用于設置文件指針的位置
語法:int fseek(resource handle,int offset[,int whence])
參數:
handle:必要參數。打開某文件后返回的文件標識
offset:必要參數。用于設定文件指針的位置
whence:可省參數。
fessk()函數的whence參數說明
seek_set:設置位置等于offset個字節。該值為該參數的默認值
seek_cur:設置位置等于當前位置加上offset個字節
seek_end:設置位置等于文件尾加上offset個字節
例如,應用fopen()函數打開文件“test.txt”,然后讀取該文件4096個字節的內容,最后應用fseek()函數將文件指針恢復到原位置。
復制代碼 代碼如下:
?php
$fp=fopen("filterwords.txt","r"); //以只讀方式打開某文件
$data=fgets($fp,4096); //讀取文件中一行4096個字節的內容
fseek($fp,0); //使文件指針指向第0個字節的位置
?

string fgets(int handle[,int length])
從handle指向的文件中讀取一行并返回長度最多為length - 1字節的字符串。碰到換行符(包括在返回值中)、EOF或者已經讀取了length- 1字節后停止(看先碰到那一種情況)。如果沒有指定length,則默認為1K,或者說1024字節。(考慮到程序執行效率,一般還是選用某一固定長度值)
(4)fwrite()函數
fwrite()函數用于將字符串寫入指定的文件中,并可以規定寫入字節的大小。
語法:int fwrite(resource handle,string string[,int length])
參數說明:
handle:必要參數。文件標識指針
string:必要參數。要寫入某文件的字符串
length:可省參數。指寫入文件的長度,如果省略該參數則將指定字符串的所有內容寫入文件中
例如:fwrite()函數將字符串“PHP留言本”寫入filterwords.txt文件中
復制代碼 代碼如下:
?php
$fp=fopen("filterwords.txt","w+");
$str="PHP留言本";
if(fwrite($fp,$str)){
echo "文件寫入成功!";
}else{
echo "文件寫入失敗";
}
?

(5)fclose()函數
fclose()函數用于關閉指定的文件標識所指的文件。
語法:bool fclose(resource handle)
參數handle為fopen()函數或fsockopen()函數成功打開某文件后所返回的文件標識。
在留言本模塊中,通過以上介紹的函數實向文本文件“filterwords.txt”中添加敏感詞的功能。
復制代碼 代碼如下:
?php
if($_POST){
$filename="../filterwords.txt";
if(is_writable($filename)){
$file=fopen($filename,'r+'); //讀寫方式打開,將文件指針指向文件頭。
}
else{
echo "文件".$filename."不可寫";
}
//在文件尾寫文件
fseek($file,0,SEEK_END); //設置指針位置,SEEK_END設置位置等于文件尾加上offset(這里為零)個字節
$word=$_POST[txt_word];
fwrite($file,$word);
fwrite($file,"/r/n");
fclose($file);
}
?

3,讀取文件中的敏感詞
復制代碼 代碼如下:
?php
$filename="../filterwords.txt";
if(is_readable($filename)){
$arr=file($filename);
}
else{
echo "文件".$filename."不可讀";
}
while(list($name,$value)=each($arr)){//遍歷數組
$a.="$value".",";
}
echo " br 敏感詞如下: br ".$a;
?

(1)is_readable()判斷文件是否存在,并且是否可讀,如果滿足上述條件則返回True
語法:bool is_readable(string filename),參數filename用于指定文件的完整路徑
(2)void list(mixed...)
像array()一樣,這不算真正的函數,而是語言結構。list()用一步操作給一組變量進行賦值。list()僅能用于數字索引的數組并假定數字索引從0開始.
例如:
復制代碼 代碼如下:
?php
$info = array('coffee', 'brown', 'caffeine');
list($drink, $color, $power) = $info;
print "$drink is $color and $power makes it special./n";
//coffee is brown and caffeine makes it special.
list($drink, $color) = $info;
print "$drink is $color./n";
//coffee is brown.
?

(3)array each(array array)
返回array數組中當前指針位置的鍵和值,并向前移動數組指針。鍵值對被返回為四個單元的數組,鍵名為0,1,key和value.單元0和key包含數組單元的鍵名,1和value包含有數據。如果內部指針越過了數組的末端,則each()返回FALSE。
復制代碼 代碼如下:
?php
$foo = array ("bob", "fred", "jussi", "jouni", "egon", "marliese");
$bar = each($foo);
print_r($bar);
?

each()返回數組如下
Array
{
[1] = bob
[value] = bob
[0] = 0
[key] = 0
}
list()僅對數字索引起作用,而且默認鍵從零開始。所以list($name,$value)將鍵0和值bob分別賦值給$name和$value.
4,實現復選框的全選和反選
根據數據庫中的內容應用for循環語句動態創建復選框的個數,被全選或反選的復選框必須設置name為note_id[],復選框的值是留言信息的ID號。

input type="checkbox" name="note_id[]" value=" ?php echo $id;? " /
添加一個全選的復選框,作為要選擇的內容。當勾選該復選框時,調用自定義函數check_all()函數來設置復選框的全選。

input type="checkbox" name="select_all" /
span 全選 /span
全選的實現,遍歷所有的復選框form.elements[i],然后設置各多選項的checked屬性為True。
反選的實現,遍歷所有復選框form.elements[i],獲取復選框的checked屬性值,如果是True,則設置為False,否則設為True,即作為當前值的相反設置。
復制代碼 代碼如下:
script language="JavaScript"
//反選表單中checkbox
function inverse(form){
for (var i=0;i form.elements.length-2;i++){
//form.elements.length獲取頁面表單input元素的個數,例如checkbox,radio,text,button,submit等
var e = form.elements[i];
e.checked == true ? e.checked = false : e.checked = true;
}
}
//選擇表單中所有check_box
function check_all(form){
for(var i=0;i form.elements.length-2;i++){
var e=form.elements[i];
e.checked=true;
}
}
/script

二,留言本代碼分析
1,substr()截取中文字符串問題
函數:string substr(string string, int start, int [length]);
參數說明:
string:必須,表示要處理的字符串
start:必須,表示從string字符串的第start位開始取,若start為負數,則從字符串尾端算起
length:可選,表示要取的字符串長度,若length為負數,則表示取到倒數第length個字符
中文字符占兩個長度,英文字符和符號占一個長度。php內置函數substr(string str,intstart,[int length])是用來截取指定字符串長度的。在截取英文字符串時沒問題,但是在截取中文或者是中英文混合的字符串中,就會出現最后一個字符變成問號的問題。
下面則是自定義的中文字符串截取函數:
復制代碼 代碼如下:
function str_cut($str,$start,$length){ //中文字符串截取函數
$str_new=iconv_substr($str,$start,$length,"utf-8");
if($start==0){
if(strlen(utf8_decode($str)) ($length+$start)){
$str_new.=".";
}
}
return $str_new;
}

2,htmlspecialchars()函數把一些預定義的字符轉換為HTML實體。函數都是防止用戶的非法操作的。
例如:
復制代碼 代碼如下:
$str=' div 我添加的半個層 /div /td 半個表格行標記 br/ a href=" a http://www.phpstudy.net /a " phpstudy /a
echo htmlspecialchars($str);

輸出的是:
div 我添加的半個層 /div /td 半個表格行標記 br/ a href=" a http://www.phpstudy.net /a " phpstudy /a
3,str_replace()函數使用一個字符串替換字符串中的另一些字符.
語法:str_replace(find,replace,string,count)
參數說明:
find:必須。規定要查找的值。
replace:必須。規定替換find內容的值
string:必須。規定被搜索的字符串
count:可選。一個變量,對替換數進行計數
PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人欧美一区二区三区在线湿哒哒| 日韩精品在线播放| 69av在线视频| 久久亚洲精品国产亚洲老地址| 久久夜精品va视频免费观看| 欧美国产日韩一区二区三区| 国产欧美在线看| 国产成人鲁鲁免费视频a| 亚洲国产精品悠悠久久琪琪| 亚洲欧洲在线视频| 最近2019中文字幕第三页视频| 高清欧美一区二区三区| 久久精品国产亚洲精品2020| 亚洲欧美另类国产| 欧美一级大片在线观看| 欧美电影在线播放| 国产一区二区成人| 欧美自拍大量在线观看| 亚洲一区二区中文字幕| 精品亚洲精品福利线在观看| 九九热在线精品视频| 性色av一区二区三区在线观看| 日韩经典中文字幕在线观看| 国产日韩欧美夫妻视频在线观看| 国产极品jizzhd欧美| 欧美精品在线看| 欧美另类交人妖| 亚洲色图15p| 97碰在线观看| 欧美日韩在线视频一区| 欧美激情一级二级| 77777少妇光屁股久久一区| 欧美性受xxx| 国内精品美女av在线播放| 日韩精品丝袜在线| 亚洲精品日产aⅴ| 久久久久久久国产| 日韩一区视频在线| 久久久精品2019中文字幕神马| 91沈先生在线观看| 成人精品久久一区二区三区| 国产精品一区二区av影院萌芽| 久久久亚洲影院你懂的| 欧美中文在线观看国产| 久久av.com| 成人精品网站在线观看| 国产91精品久久久久久久| 国产精品久久久久久五月尺| 综合激情国产一区| 久久国产精品99国产精| 在线视频精品一| 国产精品自拍偷拍视频| 国产精品91免费在线| 青青a在线精品免费观看| 亚洲精品自拍偷拍| 一个人看的www久久| 亚洲一区国产精品| 午夜精品久久久久久久久久久久久| 欧美国产日韩免费| 欧美黑人性视频| 日韩成人在线免费观看| 色综合导航网站| 久久频这里精品99香蕉| 韩国一区二区电影| 欧美黑人性猛交| 国产精品com| 欧美激情视频一区二区| 久久免费视频这里只有精品| 欧美日韩免费网站| 欧美亚洲另类在线| 97色在线视频| 亚洲图中文字幕| 久久在线视频在线| 中文字幕在线观看日韩| 日韩激情视频在线| 欧美做受高潮1| 国产精品久久999| 欧美高清视频在线| 日韩免费黄色av| 在线观看欧美视频| 91香蕉亚洲精品| 欧美有码在线观看视频| 亚洲女人天堂成人av在线| 国内精品久久久久久影视8| 国内精品模特av私拍在线观看| 亚洲高清不卡av| 粉嫩老牛aⅴ一区二区三区| 8090理伦午夜在线电影| 伦理中文字幕亚洲| 亚洲欧美日韩一区二区三区在线| 亚洲社区在线观看| 色妞色视频一区二区三区四区| 国产性猛交xxxx免费看久久| 亚洲成avwww人| 91精品国产色综合久久不卡98口| 日韩美女在线播放| 色诱女教师一区二区三区| 久久艹在线视频| 国产精品va在线播放我和闺蜜| 国产日韩在线精品av| 欧美另类极品videosbest最新版本| 97国产真实伦对白精彩视频8| 亚洲成人在线视频播放| 日本一区二区在线免费播放| 亚洲精品一二区| 国产国语videosex另类| 欧美国产日韩中文字幕在线| 国产在线一区二区三区| 欧美性猛交xxxx富婆弯腰| 亚洲网站在线播放| 成人夜晚看av| 欧美成人午夜免费视在线看片| 欧美—级a级欧美特级ar全黄| 欧美华人在线视频| 伊人久久精品视频| 亚洲欧美精品一区| 日韩一级黄色av| 亚洲高清在线观看| 91精品国产色综合| 欧美性少妇18aaaa视频| 精品少妇一区二区30p| 亚洲欧美另类人妖| 精品久久久久久久久久ntr影视| 欧美激情在线狂野欧美精品| 97av在线视频免费播放| 国产精品99久久久久久白浆小说| www.日韩.com| 久热爱精品视频线路一| 中日韩美女免费视频网址在线观看| 日韩精品极品视频免费观看| 国产亚洲综合久久| 亚洲人成亚洲人成在线观看| 96精品久久久久中文字幕| 久久成人免费视频| 精品国产999| 在线观看国产精品日韩av| 欧美国产高跟鞋裸体秀xxxhd| 欧美性视频精品| 亚洲裸体xxxx| 亚洲人成网站777色婷婷| 欧美丝袜美女中出在线| 欧洲成人性视频| 亚洲福利影片在线| 亚洲精品有码在线| 日韩成人在线网站| 欧美美女操人视频| 91天堂在线观看| 欧美视频13p| 精品一区二区三区四区在线| www.久久色.com| 中文一区二区视频| 68精品久久久久久欧美| 岛国av一区二区在线在线观看| 国产日韩欧美一二三区| 欧美又大粗又爽又黄大片视频| 国语对白做受69| 国产婷婷97碰碰久久人人蜜臀| 中文字幕在线看视频国产欧美| 亚洲乱码国产乱码精品精天堂| 亚洲欧美国产精品专区久久| 久久免费在线观看| 久久久久国产精品www| 日韩欧美极品在线观看| 亚洲欧美另类在线观看|