PHP过滤黑名单关键字的例子

 更新时间:2016年11月25日 17:25  点击:1952
关键字过滤非常的简单把要过滤的内容存在数组或文档中,然后用户提交时我们进行preg_match或istrpos判断即可解决了,具体方法如下。

 代码如下 复制代码

//过滤黑名单关键字函数
function check_($data){
 $keywords = "你是大神吗|你好|去死";
 if(preg_match("/$keywords/i",$data)){
  return;
 }else{
  return $data;
 }
 
}

关键字的存放形式为txt,txt文件中以这样形式存放:|赌博机|卖血|出售肾|出售器官|眼角膜

 代码如下 复制代码

<?php
function Filter_word( $str, $fileName )  
{  
    if ( !($words = file_get_contents( $fileName )) ){  
        die('file read error!');  
    }  
    $str = strtolower($str);
//var_dump($words);
$word = preg_replace("/[1,2,3] | /i", '', $words);
//$wor = substr($word,0,-1);
//$w = preg_replace("|/|i", '/', $word);
//echo "<pre>";
//var_dump($w);
//$words = "aaa|bbb|ccc|ddd|eee";
    $matched = preg_replace('/'.$word.'/i', '***', $string);
return $matched;
}  
 
$content = "<a href='#'>我要aaafsdfbbb</a>";  
if ($result = Filter_word($content, './words.txt') ){
echo $result;
    echo "替换成功 ";  
}else{  
    echo "替换失败! ";

网站流量大但是访客就是不要点击!着让我们想赚钱的站长苦恼不以!但是在php中有这么一个很好的函数就是:session。思路是这样的:用session来保存每一个访问者的ip。

这样 访问一次后就不调广告了。这样就2全奇美了。不会乱跳广告。二又可以增加收入。

代码如下:
 

 代码如下 复制代码

<?php
session_start();
$lifeTime = 24 * 3600;
session_set_cookie_params($lifeTime);
$i = $_SESSION['vv']=$_SESSION['vv']+1;

if ($i < 2):?>

您的弹跳窗代码   

<?php endif; ?>

 

注意:必须要是弹跳窗的广告才能现实!

在php中__FILE__当前运行文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。这是一个魔法变量(预定义常量),我们可以通用dirname与basename来获取文件目录或文件名。


一、__FILE__与dirname(__FILE__)与basename(__FILE__)使用:


通常在配置文件路径的时候用dirname(__FILE__)是非常有效的方法,但是因为__FILE__的路径是当前代码所在文件(而不是url所在文件)完整路径,所以定义配置文件通常要放在根目录下定义网站的根地址,但是下面的方法可以解决配置文件的存放问题。

 代码如下 复制代码
1.dirname(dirname(__FILE__)); /*
2.
3.假设__FILE__为 /home/web/config/config.php 
4.上面的方法输出为 /home/web 
5.*/

dirname(dirname(__FILE__));得到的是文件上一层目录名
dirname(__FILE__);得到的是文件所在层目录名


假设现在的目录及文件结构如下,我们所要测试的变量在wp_smtp_admin.php文件中:

wp-content\plugins\wp-smtp\wp-smtp.php
wp-content\plugins\wp-smtp\wp_smtp_admin.php
wp-content\plugins\wp-smtp\img\blq_32_32.jpg

测试结果如下:

 代码如下 复制代码

echo __FILE__ . "<br />"; //输出 F:\xampp\htdocs\wordpress\wp-content\plugins\wp-smtp\wp_smtp_admin.php
echo dirname(__FILE__) . "<br />"; //输出 F:\xampp\htdocs\wordpress\wp-content\plugins\wp-smtp
echo basename(__FILE__) . "<br />"; //输出 wp_smtp_admin.php二、测试wordpress自带的一些函数://www.111cn.net

echo plugin_basename(__FILE__) . "<br />"; //输出 wp-smtp/wp_smtp_admin.php
echo dirname(plugin_basename(__FILE__)) . "<br />"; //输出 wp-smtp
echo plugin_dir_url(__FILE__) . "<br />"; //输出 http://localhost/wordpress/wp-content/plugins/wp-smtp/
echo plugin_dir_path(__FILE__) . "<br />"; //输出 F:\xampp\htdocs\wordpress\wp-content\plugins\wp-smtp/
echo plugins_url() . "<br />"; //输出 http://localhost/wordpress/wp-content/plugins
echo plugins_url('',__FILE__) . "<br />"; //输出 http://localhost/wordpress/wp-content/plugins/wp-smtp
echo plugins_url('/img/blq_32_32.jpg',__FILE__)  . "<br />"; //输出 http://localhost/wordpress/wp-content/plugins/wp-smtp/img/blq_32_32.jpg

好了现在我们来看看这dirname与basename相关说明

dirname() 函数返回路径中的目录部分。

basename() 函数返回路径中的文件名部分。

从这里我们就不难看出上面的结果了。

JSON是一种轻量级别的数据交互格式,他可以方便快捷的提交网络的应用,相对于xml来讲json可读性不强,但要在数据传输上要优于xml哦,下面我们看几个实例。

在PHP编码JSON(json_encode)
PHP json_encode()函数用于在PHP JSON编码。这个函数成功返回JSON表示的值,失败则返回FALSE。

语法:

string json_encode ( $value [, $options = 0 ] )参数:
value: 即将编码的值,此函数只适用于UTF-8编码的数据。

options: 这个可选的值是一个位掩码,由JSON_HEX_TAG JSON_HEX_QUOT,JSON_HEX_AMP,JSON_HEX_APOS,JSON_NUMERIC_CHECK,JSON_PRETTY_PRINT,JSON_UNESCAPED_SLASHES,JSON_FORCE_OBJECT

例子

下面的例子演示了如何用PHP数组转换成JSON:

 代码如下 复制代码

<?php
   $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
   echo json_encode($arr);
?>

在执行过程中,这将产生以下结果:

{"a":1,"b":2,"c":3,"d":4,"e":5}

下面的示例显示如何将PHP对象可以转换成JSON:

 代码如下 复制代码

<?php
   class Emp {
       public $name = "";
       public $hobbies  = "";
       public $birthdate = "";
   }
   $e = new Emp();
   $e->name = "sachin";
   $e->hobbies  = "sports";
   $e->birthdate = date('m/d/Y h:i:s a', "8/5/1974 12:20:03 p");
   $e->birthdate = date('m/d/Y h:i:s a', strtotime("8/5/1974 12:20:03"));

   echo json_encode($e);
?>

在执行过程中,这将产生以下结果:

{"name":"sachin","hobbies":"sports","birthdate":"08/05/1974 12:20:03 pm"}

解码JSON在PHP(json_decode)
PHP json_decode()函数用于解码JSON在PHP。这个函数返回值从json解码成适当的 PHP类型。

语法:
mixed json_decode ($json [,$assoc = false [, $depth = 512 [, $options = 0 ]]])参数:
json_string: 它必须是UTF-8编码的数据编码的字符串

assoc: 这是一个布尔类型参数设置为TRUE时,返回的对象将被转换成关联数组

depth: 它是一个整数类型的参数,它指定递归深度

options: 它是一个整数类型的位掩码JSON解码,支持JSON_BIGINT_AS_STRING

例子
下面的示例显示了如何可以使用PHP来解码JSON对象:

 代码如下 复制代码

<?php
   $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

   var_dump(json_decode($json));
   var_dump(json_decode($json, true));
?>

在执行过程中,这将产生以下结果:

object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

假如我们获取的JSON数据如下:(可以使用curl、fsockopen等方式获取)

 代码如下 复制代码

{
 "translation":["Hello world"],
 "query":"你好世界",
 "errorCode":0,
 "web":[
  {
   "value":["hello world"],
   "key":"你好世界"
  },
  {
   "value":["Hello World"],
   "key":"世界你好"
  }
 ]
}

用json_decode函数返回array的方式得到:

Array
(
 [translation] => Array
  (
   [0] => Hello world
  )
 [query] => 你好世界
 [errorCode] => 0
 [web] => Array
  (
   [0] => Array
    (
     [value] => Array
      (
       [0] => hello world
      )
     [key] => 你好世界
    )
   [1] => Array
    (
     [value] => Array
      (
       [0] => Hello World
      )
     [key] => 世界你好
    )
  )
)

我们在PHP语言中可以用以下方法取得我们想要的值:

 代码如下 复制代码

<?php
/*----------------------------------
$data = '
{
 "translation":["Hello world"],
 "query":"你好世界",
 "errorCode":0,
 "web":[
  {
   "value":["hello world"],
   "key":"你好世界"
  },
  {
   "value":["Hello World"],
   "key":"世界你好"
  }
 ]
}
';
-------------------------------------*/
$data = <<<STR
{
 "translation":["Hello world"],
 "query":"你好世界",
 "errorCode":0,
 "web":[
  {
   "value":["hello world"],
   "key":"你好世界"
  },
  {
   "value":["Hello World"],
   "key":"世界你好"
  }
 ]
}
STR;
$jsondata=json_decode($data,true);
header("Content-Type: text/html; charset=UTF-8");
//print_r($jsondata);
echo "<br />".$jsondata['translation'][0]; //Hello world
echo "<br />".$jsondata['query']; //你好世界
echo "<br />".$jsondata['web'][0]['value'][0]; //hello world
echo "<br />".$jsondata['web'][1]['key']; //世界你好
?>

例,结合数据库操作

 代码如下 复制代码

<?php
include './include/conn.php';  //数据库链接文件
$sql_notice = mysql_query('SELECT * FROM gg_notice where enable = "1" limit 0,10');
$notice = mysql_fetch_array($sql_notice, MYSQL_ASSOC);
print_r ($notice);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>第一php网提供的教程--将数据库读取的数据生成json格式</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"/></script> -->
<script language=javascript>
</script>
</head>
<body>
<pre>
<h1>请注意两种方法生成的对象数组在结构上的区别</h1>
<?php
echo '<h1>法一</h1>';
//假设以下数组是根据我们从数据库读取的数据生成的
$jarr=array('total'=>239,'row'=>array(
           array('code'=>'001','name'=>'中国www.111cn.net','addr'=>'Address 11','col4'=>'col4 data'),
           array('code'=>'002','name'=>'Name 2','addr'=>'Address 12','col4'=>'col4 data'),
                                     )
           );
//法一:
$jobj=new stdclass();//实例化stdclass,这是php内置的空类,可以用来传递数据,由于json_decode后的数据是以对象数组的形式存放的,
//所以我们生成的时候也要把数据存储在对象中
foreach($jarr as $key=>$value){
$jobj->$key=$value;
}
print_r($jobj);//打印传递属性后的对象
echo '使用$jobj->row[0]['code']输出数组元素:'.$jobj->row[0]['code'].'<br>';
echo '编码后的json字符串:'.json_encode($jobj).'<br>';//打印编码后的json字符串


echo '<hr>';
//法二:
echo '<h1>法二</h1>';
echo '编码后的json字符串:';
echo $str=json_encode($jarr);//将数组进行json编码
echo '<br>';
$arr=json_decode($str);//再进行json解码
print_r($arr);//打印解码后的数组,数据存储在对象数组中
echo '使用$arr->row[0]->code输出数组元素:'.$arr->row[0]->code;

?>

</body>
</html>

利用php来采集图片方法很简单本实例使用了fopen来保存文件了,但在此一聚教程小编建义大家不要使用此方法来获取,如果数据量大量fopen函数性能比curl差得远了,所以大家可尝试改进使用curl来处理。
 代码如下 复制代码

<?php
/*使用PHP实现采集远程图片功能。基本流程:

1、获取目标网站图片地址。

2、读取图片内容。

3、创建要保存图片的路径并命名图片名称。

4、写入图片内容。

5、完成。

我们通过写几个函数来实现这一过程。*/

//函数make_dir()建立目录。判断要保存的图片文件目录是否存在,如果不存在则创建目录,并且将目录设置为可写权限。
function make_dir($path){
    if(!file_exists($path)){//不存在则建立
        $mk=@mkdir($path,0777); //权限
        @chmod($path,0777);
    }
    return true;
}

//函数read_filetext()取得图片内容。使用fopen打开图片文件,然后fread读取图片文件内容。
function read_filetext($filepath){
    $filepath=trim($filepath);
    $htmlfp=@fopen($filepath,”r”);
    //远程
    if(strstr($filepath,”://”)){
        while($data=@fread($htmlfp,500000)){
            $string.=$data;
        }
    }
    //本地
    else{
        $string=@fread($htmlfp,@filesize($filepath));
    }
    @fclose($htmlfp);
    return $string;
}


//函数write_filetext()写文件,将图片内容fputs写入文件中,即保存图片文件。
function write_filetext($filepath,$string){
    //$string=stripSlashes($string);
    $fp=@fopen($filepath,”w”);
    @fputs($fp,$string);
    @fclose($fp);
}


//函数get_filename()获取图片名称,也可以自定义要保存的文件名。
function get_filename($filepath){
    $fr=explode(“/”,$filepath);
    $count=count($fr)-1;
    return $fr[$count];
}


//然后将几个函数组合,在函数save_pic()中调用,最后返回保存后的图片路径。
function save_pic($url,$savepath=”){
    //处理地址
    $url=trim($url);
    $url=str_replace(“ ”,”%20″,$url);
    //读文件
    $string=read_filetext($url);
    if(emptyempty($string)){
        echo ’读取不了文件’;exit;
    }
    //文件名
    $filename = get_filename($url);
    //存放目录
    make_dir($savepath); //建立存放目录
    //文件地址
    $filepath = $savepath.$filename;
    //写文件
    write_filetext($filepath,$string);
    return $filepath;
}


//最后一步就是调用save_pic()函数保存图片,我们使用以下代码做测试。
//目标图片地址
//$pic = ”/1205/06/2776119_end1_thumb.jpg”;
// for($i=100; $i<=204; $i++)
// {
    // $pic = ’http://cache.soso.com/img/img/e’.$i.’.gif’;
////保存目录
// $savepath = ”images/”;
// echo save_pic($pic,$savepath).”<br />”;
// }


/*
实际应用中,我们可能会采集某个站点的内容,比如产品信息,包括采集防盗链的图片保存到网站上服务器上。这时我们可以使用正则匹配页面内容,将页面中相匹配的图片都找出来,然后分别下载到网站服务器上,完成图片的采集。以下代码仅供测试:
*/
function get_pic($cont,$path){
    $pattern_src = ’/<[img|IMG].*?src=['|"](.*?(?:[.gif|.jpg]))['|"].*?[/]?>/’;
    $num = preg_match_all($pattern_src, $cont, $match_src);
    $pic_arr = $match_src[1]; //获得图片数组
    foreach ($pic_arr as $pic_item) { //循环取出每幅图的地址
        save_pic($pic_item,$path); //下载并保存图片
        echo ”[OK]..!<br />”;
    }
}

//然后我们通过分析页面内容,将主体内容找出来,调用get_pic()实现图片的保存。

//我们采集太平洋电脑网上一篇关于手机报道内容页的图片  php100.com
$url = ”你的网地址”;

$content = file_get_contents($url);//获取网页内容
$preg = ’#<div class=”art_con”>(.*)<div class=”ivy620 ivy620Ex”></div>#iUs’;
preg_match_all($preg, $content, $arr);
$cont = $arr[1][0];
get_pic($cont,’img/’);

/*
以上代码笔者亲测,可以采集图片,但是还有些场景没考虑进去,比如目标网站做了302多次跳转的,目标网站做了多种防采集的,留给喜欢折腾的同学去试试吧。
*/
?>

[!--infotagslink--]

相关文章

  • Linux下PHP安装curl扩展支持https例子

    安装curl扩展支持https是非常的重要现在许多的网站都使用了https了,下面我们来看一篇关于PHP安装curl扩展支持https例子吧。 问题: 线上运行的lamp服务器,默认yu...2016-11-25
  • cmd下过滤文件名称的两种方法

    这篇文章主要介绍了cmd下过滤文件名称的两种方法,需要的朋友可以参考下...2020-06-30
  • C# 中的var关键字详细介绍

    这篇文章主要介绍了C# 中的var关键字详细介绍的相关资料,需要的朋友可以参考下...2020-06-25
  • C#中的yield关键字的使用方法介绍

    yield这个关键字是和迭代器挂钩的,而且是与return一起以yield return的形式合用的,用来返回迭代器中的条目。...2020-06-25
  • php使用floor去掉小数点的例子

    floor会产生小数了如果我们不希望有小数我们是可以去除小数点的了,下面一聚教程小编来为各位介绍php使用floor去掉小数点的例子,希望对各位有帮助。 float floor (...2016-11-25
  • Spring Data JPA 关键字Exists的用法说明

    这篇文章主要介绍了Spring Data JPA 关键字Exists的用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-06-10
  • php关键字仅替换一次的实现函数

    对于批量替换关键字的问题,仅替换而言没什么可说的,但这里需要的是每个关键字仅需要替换一次就可以了。查阅了php相关函数文档,发现php本身是没有函数实现这个功能的,所以不得不自己解决了。总结了几种可行方法,小记一下! (1...2015-10-30
  • c# volatile 关键字的拾遗补漏

    这篇文章主要介绍了c# volatile 关键字的相关资料,帮助大家更好的理解和学习c#的相关知识,感兴趣的朋友可以了解下...2020-12-08
  • 用python获取txt文件中关键字的数量

    这篇文章主要介绍了如何用python获取txt文件中关键字的数量,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下...2020-12-24
  • PHP正则表达式过滤html标签属性(DEMO)

    这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06
  • Java类的访问权限关键字用法说明

    这篇文章主要介绍了Java类的访问权限关键字用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-29
  • Delphi常用关键字用法详解

    这篇文章主要介绍了Delphi常用关键字用法,包括了各个常用的关键字及其详细用法,需要的朋友可以参考下...2020-06-30
  • 详解C语言中const关键字的用法

    这篇文章主要对C语言中const关键字的用法进行了详细的分析介绍,需要的朋友可以参考下...2020-04-25
  • Swift中static和class关键字的深入讲解

    这篇文章主要给大家介绍了关于Swift中static和class关键字的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-30
  • JavaScript过滤字符串中的中文与空格方法汇总

    这篇文章主要介绍了JavaScript过滤字符串中的中文与空格方法汇总 的相关资料,需要的朋友可以参考下...2016-03-09
  • 纯Css实现下拉菜单的简单例子

    下面我们来看一篇关于纯Css实现下拉菜单的简单例子,希望这篇文章能够给各位同学带来帮助,具体步骤如下. 大家可能会经常用到hover这属性,用hover实现鼠标经过的颜...2017-01-22
  • C#中var关键字用法分析

    这篇文章主要介绍了C#中var关键字用法,实例分析了C#中var关键字的应用场合,对于.NET的学习具有一定参考价值,需要的朋友可以参考下...2020-06-25
  • php时间日期对比与日期加减例子

    在php中日期对比用得比较多了,还有一个日期加减也用到不少,下面我拿两个例子来给大家介绍在php中日期操作方法吧,希望文章能给你带来帮助 功能需求 文章发布时段操...2016-11-25
  • php更新修改excel中的内容例子

    本例子不是读取Excel或生成新的Excel,而是读取现有的Excel文件,然后修改Excel中的数据,就像修改mysql中数据一样的哦。 代码如下 ...2016-11-25
  • C 语言restrict 关键字的使用浅谈

    C 语言restrict 关键字的使用浅谈,需要的朋友可以参考一下...2020-04-25