Heim >Backend-Entwicklung >PHP-Tutorial >Warning:preg_match() [function.preg-match]:Compilation failed:nothing to repeat解决方案

Warning:preg_match() [function.preg-match]:Compilation failed:nothing to repeat解决方案

WBOY
WBOYOriginal
2016-06-13 10:13:471190Durchsuche

Warning:preg_match() [function.preg-match]:Compilation failed:nothing to repeat
Warning:preg_match() [function.preg-match]:Compilation failed:nothing to repeat at offset 0 in E:\EasyPHP-5.3.4.0\www\01\note_check.php on line 9 怎么修改,望各高手帮帮我啊?
程序如下:
error_reporting(E_ALL ^ E_NOTICE);
require("global.php");
if($_POST){
if (is_file("./filterwords.txt")){ //判断给定文件名是否为一个正常的文件
$filter_word = file("./filterwords.txt"); //把整个文件读入一个数组中
$str=$_POST['content'];
for($i=0;$i if(preg_match("/".trim($filter_word[$i])."/i",$str)){ //应用正则表达式,判断传递的留言信息中是否含有敏感词
echo "<script> alert('留言信息中包含敏感词!');history.back(-1);</script>";
exit;
}
}
}
$content =$_POST['content'];
$user_name = $_POST['user_name'];
$title = $_POST['title'];
$mood= $_GET['mood'];
$head = $_POST['head'].".gif";
$note_flag=$_POST['checkbox'];
if($note_flag!=1){$note_flag=0;}
$datetime=date("Y-m-d H:i:s");
$sql = "insert into tb_note (note_user,note_title,note_content,note_mood,note_time,note_user_pic,note_flag) values('".$user_name."','".$title."','".$content."','".$mood."','".$datetime."','".$head."','".$note_flag."')";
$DB->query($sql);
$url = "./index.php";
redirect_once($url);
}
?>

------解决方案--------------------
你的 $filter_word[$i] 中包含了 perl 保留字,尤其是 ?、+、*
需要转义
正确的写法是
preg_match("/".preg_quote(trim($filter_word[$i]))."/i",$str)

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn