PHP判断字符串是否含有数组任意值(阻止网站发布垃圾文章)
我们在网站开发过程中,有时需要对某个数据进行验证,防止自己的网站被提交了一些不好的数据,这时我们就需要使用验证判断。
实例:
我们做网站时,在自己网站上添加了在线投稿功能,但这个投稿功能会有一定的风险,会被一些别有用心的人拿来发布不合规内容,这样对于我们网站本身也是特别不好的。
如何对网站发布的内容进行验证呢,如果网站发布的内容中包含了一些违规词,就不能发布。如果使用之前讲的php判断字符串中是否包含另一个字符串的方法就很难有效,因为它只能判断一个词,这就要用到我们今天说的知识:PHP判断字符串是否含有数组中的任意值。
基本语法:
<?php
$arr=[];
$str='';
$result=0;
foreach($arras$item){
if(strpos($str,$item)!==false){
$result=1;
break;
}
}
echo $result;
?>
实际应用:
<?php
$arr=array('不合规词1','不合规词1');
$str='这里是文章发布的内容';
$result=0;
foreach($arras$item){
if(strpos($str,$item)!==false){
$result=1;
break;
}
}
echo $result;
?>
代码解释:
$arr 是填写网站过滤的词,每个词用逗号隔开;
$str 是要被检验的内容
$result 是检验的结果,如果$result=0 代表不包含 $result=1 代表包含
使用案例:
通过使用上面的代码中$result 的输出值,我们可以进行检验判断。以下是将这段代码与前端用户投稿功能结合的案例代码。它对用户发布的内容和标题进行验证判断,如果包含了不合规词语,将不能发布。对于自己开网站很有用!
<?php
$badkey=array('女神','网游','不错的文章');
$result=0;
foreach($badkey as $item){
if(strpos($title,$item)!==false){
$result=1;
break;
}
}
$jieguo = $result;
if($jieguo==1){wp_die('内容不当!');}
?>
代码解释:
在这段代码里,我们一共设置了三个过滤词,分别是 女神,网游,不错的文章 ,并将它们写在数组$badkey里;
wp_die() 起到了阻止发布的作用,如果判断$jieguo==1 代码发布的内容中包含了三个过滤词任意一个,这时就阻止它发布。
以下是带有PHP判断的wordpress 用户投稿功能代码:(可以有效的防止网站发布垃圾文章)
<?php
/*
Template Name: 发布模板
代码来源:学做网站论坛 https://www.xuewangzhan.net/
*/
if( isset($_POST['tougao_form']) && $_POST['tougao_form'] == 'send') {
global $wpdb;
$last_post = $wpdb->get_var("SELECT `post_date` FROM `$wpdb->posts` ORDER BY `post_date` DESC LIMIT 1");
if ( (date_i18n('U') - strtotime($last_post)) < 120 ) {
wp_die('您发布也太勤快了吧,先歇会儿!<a href="'.$current_url.'">点此返回</a>'); }
// 表单变量初始化
$name = isset( $_POST['tougao_authorname'] ) ? trim(htmlspecialchars($_POST['tougao_authorname'], ENT_QUOTES)) : '';
$email = isset( $_POST['tougao_authoremail'] ) ? trim(htmlspecialchars($_POST['tougao_authoremail'], ENT_QUOTES)) : '';
$blog = isset( $_POST['tougao_authorblog'] ) ? trim(htmlspecialchars($_POST['tougao_authorblog'], ENT_QUOTES)) : '';
$title = isset( $_POST['tougao_title'] ) ? trim(htmlspecialchars($_POST['tougao_title'], ENT_QUOTES)) : '';
$category = isset( $_POST['cat'] ) ? (int)$_POST['cat'] : 0;
$content = isset( $_POST['tougao_content'] ) ? trim($_POST['tougao_content']) : '';
$content = str_ireplace('?>', '?>', $content);
$content = str_ireplace('<?', '<?', $content);
$content = str_ireplace('<script', '<script', $content);
$content = str_ireplace('<a ', '<a rel="external nofollow" ', $content);
// 表单项数据验证
if ( empty($name) || mb_strlen($name) > 20 ) {
wp_die('昵称必须填写,且长度不得超过20字。<a href="'.$current_url.'">点此返回</a>');
}
$badkey=array('女神','网游','不错的文章');
$result=0;
foreach($badkey as $item){
if(strpos($title,$item)!==false){
$result=1;
break;
}
}
$jieguo = $result;
if($jieguo==1){wp_die('内容不当!');}
if ( empty($email) || strlen($email) > 60 || !preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $email)) {
wp_die('Email必须填写,且长度不得超过60字,必须符合Email格式。<a href="'.$current_url.'">点此返回</a>');
}
if ( empty($title) || mb_strlen($title) > 100 ) {
wp_die('标题必须填写,且长度不得超过100字。<a href="'.$current_url.'">点此返回</a>');
}
if ( empty($content) || mb_strlen($content) > 3000 || mb_strlen($content) < 50) {
wp_die('内容必须填写,且长度不得超过3000字,不得少于50字。<a href="'.$current_url.'">点此返回</a>');
}
$post_content = '作者: '.$name.'<br />Email: '.$email.'<br />详细内容:<br />'.$content.'<br /><br />联系我时,请说是在学做网站论坛看到的,谢谢!<br />';
$tougao = array(
'post_title' => $title,
'post_content' => $post_content,
'post_category' => array($category)
);
// 将文章插入数据库
$status = wp_insert_post( $tougao );
if ($status != 0) {
// 发布成功给博主发送邮件
// somebody#example.com替换博主邮箱
// My subject替换为邮件标题,content替换为邮件内容
wp_mail("dangtu123@126.com","发贴成功了……","恭喜你,在学做网站论坛发贴成功了");
wp_die('发布成功!需经过学做网站论坛审核之后才能显示!快审核,请记住我们网址:https://www.xuewangzhan.net/!<a href="'.$current_url.'">点此返回</a>', '发布成功');
}
else {
wp_die('发布失败!请返回重新发布!<a href="'.$current_url.'">点此返回</a>');
}
} get_header();?>