php生成验证码图片从入门和精通教程

 更新时间:2016年11月25日 17:30  点击:1382
在php中要生成验证码图片是相当的简单的,因为在php中为我们提供了图形gd.dll库,要启用gd图形库我们只要在在php.ini中把php-gd前面的;去就可以了。

方法一

 代码如下 复制代码

$authnum='';
$ychar="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
$list=explode(",",$ychar);//分割函数
for($i=0;$i<4;$i++){
$randnum=rand(0,35);
$authnum.=$list[$randnum];//以数组的形式输出

方法二: 
 

 代码如下 复制代码
private function createCheckCode()
{
for(i=0;i<this->codeNum;i++)
{
number = rand(0,2);
switch(number)
{
case 0: rand_number = rand(48,57); break;//数字
case 1: rand_number = rand(65,90);break;//大写字母
case 2: rand_number = rand(97,122);break;//小写字母
}
$asc = sprintf("%c",rand_number);
$asc_number = asc_number.asc;
}
return asc_number;
}

方法三: 
 

 代码如下 复制代码
srand(microtime()*100000);//相当于计时器
$string="abcdefghigklmnopqrstuvwxyz123456789";
for($i=0;$i<4;$i++)
{
$new_number.=$string[rand(0,strlen($string)-1)];//随即的产生一个数组
}

方法四: 
 

 代码如下 复制代码

for($i=0;$i<4;$i++)
{
$rand.=dechex(rand(1,15));//将十进制转化为十六进制
}


 

随机生成数字,字母的代码:

 

 代码如下 复制代码
<?php
//che.php
session_start();
for($i=0;$i<4;$i++)
{
$rand.=dechex(rand(1,15));
}
$_SESSION['check_num']=$rand;
$image=imagecreatetruecolor(50,30);
$bg=imagecolorallocate($im,0,0,0);//第一次用调色板的时候,背景颜色
$te=imagecolorallocate($im,255,255,255);
imagestring($image,6,rand(0,20),rand(0,2),$rand,$te);
ob_clean();//PHP网页中因为 要生成验证码而出现 图像"http://localhost/**.php"因其本身有错无法显示
header("Content-type:image/jpeg"); imagejpeg($image);
?>

给图片画出干扰线代码: 
 

 代码如下 复制代码
for($i=0;$i<8;$i++)//画出多条线
{
$cg=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));//产生随机的颜色
imageline($im,rand(10,40),0,rand(10,40),20,$cg);
}

给图片画出干扰点的代码: 
 

 代码如下 复制代码
for($i=0;$i<80;$i++)//画出多个点
{
imagesetpixel($im,rand(0,40),rand(0,20),$cg);
}

把文字写入图片代码: 
 

 代码如下 复制代码

$str=array('我','我','亲','亲');//存储显示的汉字
for($i=0;$i<4;$i++)
{
$sss.=$str[rand(0,3)];//随机显示汉字
}

//$str=iconv("gb2312","utf-8",$str); //汉字编码转化,我的好像不需要
imagettftext($im,10,0,rand(5,60),rand(5,60),$te,"simhei.ttf",$sss);//

最后我们结合实际分享一个完整的实例

 

 代码如下 复制代码
/**
 * 生成验证码图片
 *
 * @param String $word 验证码在session中的变量名称
 */
function valiCode($word='randcode'){
 Header("Content-type: image/gif");
 $border = 0; //是否要边框 1要:0不要
 $how = 4; //验证码位数
 $w = $how*15; //图片宽度
 $h = 18; //图片高度
 $fontsize = 10; //字体大小
 $alpha = "abcdefghijkmnpqrstuvwxyz"; //验证码内容1:字母
 $number = "23456789"; //验证码内容2:数字
 $randcode = ""; //验证码字符串初始化
 srand((double)microtime()*1000000); //初始化随机数种子
 $im = ImageCreate($w, $h); //创建验证图片
 /*
 * 绘制基本框架
 */
 $bgcolor = ImageColorAllocate($im, 255, 255, 255); //设置背景颜色
 ImageFill($im, 0, 0, $bgcolor); //填充背景色
 if($border)
 {
  $black = ImageColorAllocate($im, 0, 0, 0); //设置边框颜色
  ImageRectangle($im, 0, 0, $w-1, $h-1, $black);//绘制边框
 }
 
 /*
 * 逐位产生随机字符
 */
 for($i=0; $i<$how; $i++)
 {
  $alpha_or_number = mt_rand(0, 1); //字母还是数字
  $str = $alpha_or_number ? $alpha : $number;
  $which = mt_rand(0, strlen($str)-1); //取哪个字符
  $code = substr($str, $which, 1); //取字符
  $j = !$i ? 4 : $j+15; //绘字符位置
  $color3 = ImageColorAllocate($im, mt_rand(0,100), mt_rand(0,100), mt_rand(0,100)); //字符随即颜色
  ImageChar($im, $fontsize, $j, 3, $code, $color3); //绘字符
  $randcode .= $code; //逐位加入验证码字符串
 }
 
 /*
 * 如果需要添加干扰就将注释去掉
 *
 * 以下for()循环为绘背景干扰线代码
 */
 /* + -------------------------------绘背景干扰线 开始-------------------------------------------- + */
 for($i=0; $i<5; $i++)//绘背景干扰线
 {
  $color1 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰线颜色
  ImageArc($im, mt_rand(-5,$w), mt_rand(-5,$h), mt_rand(20,300), mt_rand(20,200), 55, 44, $color1); //干扰线
 }
 /* + -------------------------------绘背景干扰线 结束-------------------------------------- + */
 
 /*
 * 如果需要添加干扰就将注释去掉
 *
 * 以下for()循环为绘背景干扰点代码
 */
 /* + --------------------------------绘背景干扰点 开始------------------------------------------ + */
 
 for($i=0; $i<$how*40; $i++)//绘背景干扰点
 {
  $color2 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰点颜色
  ImageSetPixel($im, mt_rand(0,$w), mt_rand(0,$h), $color2); //干扰点
 }
 
 /* + --------------------------------绘背景干扰点 结束------------------------------------------ + */
 
 //把验证码字符串写入session  方便提交登录信息时检验验证码是否正确  例如:$_POST['randcode'] = $_SESSION['randcode']
 $_SESSION[$word] = $randcode;
 /*绘图结束*/
 Imagegif($im);
 ImageDestroy($im);
 /*绘图结束*/
}

调用方法也很简单把上面实例保存img.php文件,然后在要调用的页面
html页面如下

 代码如下 复制代码

<script language="javascript">
 function refresh_code()
 {
  form1.imgcode.src="verifycode.php?a="+Math.random();
 }
</script>

<form id="form1" name="form1" method="post" action="checkcode.php">
  <label for="code">验证码:</label>
  <input type="text" name="code" id="textfield" />
  <img id="imgcode" src="VerifyCode.php" alt="验证码" />
  <a href="javascript:refresh_code()">看不清?换一个</a>
  <input type="submit" name="button" id="button" value="提交" />
</form>

这要就可以实现验证码调用了。

再加个提交验证验证码是否正确

 代码如下 复制代码

<?php
session_start();
  if((strtoupper($_POST["code"])) == strtoupper(($_SESSION["VerifyCode"]))){
 print("验证码正确,");
  }else{
    print("验证码错误,");
  }

?>

这要就我们完成了从生成验证码图片和使用的整个过程了,也算是从php入门到精通验证码全部讲了。

本文章是基于jquery的ajax来实现数据跨域调用,主要是利用php实时返回json数据,这样就方便的实现的ajax跨域数据调用了。

jquery文件我这里不提供下载了,大家可以直接到google去下载哦,

可以在页面定义一个调用方法,如下:

 代码如下 复制代码

function getData(){
$.getJSON("http://123.123.123.123/?callback=?",
{
"m":"data",// 指定php的文件名字
"act":"getdata",// 指定php文件中的方法
"name":"问题儿童"// 传入的参数
},
function(data) {
// 获得返回值
}
});
}

 

对应链接下(123.123.123.123)的PHP文件,一般默认先调用index.php文件,通过index.php文件内的方法处理后,转到对应的php文件,并且找到对应的方法,执行之。
index.php代码如下:

 

 代码如下 复制代码

<?php
/**
* 入口文件
*/
$string = $_SERVER["REQUEST_URI"];// 获取访问的url
$m = get_m($string);
$file_path = "app/".$m.".php";
define('IS_INDEX',true);// 阻止直接访问app目录
require ($file_path);
/**
*
* 获取访问php文件
* @param string $url
*/
function get_m($url){
$strings = explode('m=', $url);
$res = explode("&", $strings[1]);
return empty($res[0])?'index':$res[0];
}
?>

 

data.php代码如下:

 代码如下 复制代码

<?php
/**
* data文件
*/
$act = !empty($_GET['act']) ? $_GET['act'] : '';
if ($act == 'getdata')
{
$name = "我的名字叫:".$_REQUEST['name'];
echo $_REQUEST["callback"]."(".json_encode($name).")";
}
?>

成功调用后,画面就能获取到返回的json数据了

总结:

方法简单的很就是利用了php的json_encode()函数把用户提交过来的数据我进行处理之后再输出json数据,jquery来接受这些数据就实现了我们要的跨域数据调用了。

文章介绍了PHP list(),each(),reset()函数应用详解,有需要了解的朋友可以参考一下。

1.list函数

list函数是把数组中的值赋给一些变量,语法如下:

void list ( mixed $varname, mixed $varname... )


像 array() 一样,这不是真正的函数,而是语言结构。list() 用一步操作给一组变量进行赋值。

            注意: list() 仅能用于数字索引的数组并假定数字索引从 0 开始。

例1. list() 例子

代码:

 代码如下 复制代码

<?php
$arr=array(1,2,3);
list($a,$b,$c)=$arr;
echo "$a是$a,<br/>$b是$b,<br/>$c是$c.<br/>";
?>

显示为:

$a是1,
$b是2,
$c是3.      

       注意list函数的下标必须是数字,还必须是从0开始的。

2.each函数与reset函数

each 函数是返回数组中当前的键/值对并将数组指针向前移动一步,注意是一对,下面详细说明。

该函数语法:

array each ( array &$array )

返回 array 数组中当前指针位置的键/值对并向前移动数组指针。键值对被返回为四个单元的数组,键

值为 0,1,key 和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。如果内部

指针越过了数组的末端,则 each() 返回 FALSE。这里面为什么each函数有四个下表呢?其实each函

数得到这四个下标只是方便我们操作而已,我们可以用0,1作为索引,也可以用key,value作为索引。

例2:each例子

代码:

 代码如下 复制代码

<?php
$arr=array("我是第一个值","我是第二个值","我是第三个值");
echo "当我们用0,1为索引时:<br/><br/>";
$a=each($arr);
echo "我在$arr数组中的位置为:".$a['0'];
echo "<br/>";
echo "我在$arr数组中的值为:".$a['1'];
echo "<br/><br/>";
echo "当我们用key,value为索引时:<br/><br/>";
$b=each($arr);
echo "我在$arr数组中的位置为:".$b['key'];
echo "<br/>";
echo "     我在$arr数组中的值为:".$b['value'];
?>

显示为:

当我们用0,1为索引时:
我在$arr数组中的位置为:0
我在$arr数组中的值为:我是第一个值
当我们用key,value为索引时:
我在$arr数组中的位置为:1
我在$arr数组中的值为:我是第二个值

还可用each函数与list函数结合来遍历数组,如下例:

例3:

 代码如下 复制代码
<?php
$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');
reset($fruit);
while (list($key, $val) = each($fruit)) {
      echo "$key => $valn";
}
?>

显示为:

a => apple b => banana c => cranberry

这里要注意list函数的下标必须是数字,还必须是从0开始的。

里面的reset函数解释:

在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。如果要再用 each 遍历数组,必须使用 reset()。 如果是第一次遍历数组可以不用。

详细说一下reset函数:

reset 是将数组的内部指针指向第一个单元,语法为:

mixed reset ( array &$array )

reset() 将 array 的内部指针倒回到第一个单元并返回第一个数组单元的值,如果数组为空则返回 FALSE。

可以将上面的例2与下面的例子对比一下,就很容易明白了。。。、

代码:

 代码如下 复制代码

<?php
$arr=array("我是第一个值","我是第二个值","我是第三个值");
echo "当我们用0,1为索引时:<br/><br/>";
$a=each($arr);
echo "我在$arr数组中的位置为:".$a['0'];
echo "<br/>";
echo "     我在$arr数组中的值为:".$a['1'];
echo "<br/><br/>";
echo "当我们用key,value为索引时:<br/><br/>";
reset($arr);
$b=each($arr);
echo "我在$arr数组中的位置为:".$b['key'];
echo "<br/>";
echo "     我在$arr数组中的值为:".$b['value'];
?>

显示为:

当我们用0,1为索引时:

我在$arr数组中的位置为:0
我在$arr数组中的值为:我是第一个值

当我们用key,value为索引时:

我在$arr数组中的位置为:0
我在$arr数组中的值为:我是第一个值        //注意例2中的这一行显示,就明白了

在php中我们要对一维数组排序做起来很简单我们只要用到sort(),rsort()这样就完成了,如果要对多维数据排序的话php还没这类函数这个就需要我们自己来做了。

对于php数组排序在php中提供了很多的函数,下面我列出来,不全的大家可以补充。

sort() 函数用于对数组单元从低到高进行排序。
rsort() 函数用于对数组单元从高到低进行排序。
asort() 函数用于对数组单元从低到高进行排序并保持索引关系。
arsort() 函数用于对数组单元从高到低进行排序并保持索引关系。
ksort() 函数用于对数组单元按照键名从低到高进行排序。
krsort() 函数用于对数组单元按照键名从高到低进行排序。

不过今天我们主要是不是讲php自带的数组排序函数主要是讲自定的排序


一、冒泡排序法
  说明:找到最大的数,排列到最后面,然后继续找
 
例:

 代码如下 复制代码
$arr = array(3,5,-1,0,2);
for($i=0;$i<count($arr)-1;$i++){
    for($j=0;$j<count($arr)-1-$i;$j++){
        if($arr[$j]>$arr[$j+1]){
            $temp = $arr[$j];
            $arr[$j]=$arr[$j+1];
            $arr[$j+1]=$temp;
        }
    }
}

理解:
3,5,-1,0,2
    //从第一个数开始往后比较,如果比后面的数大则与后面的数调位置
    //第一次,3小于5,那么不变
    //第二次,5大于-1,那么变成
3,-1,5,0,2
    //第三次,5大于0
3,-1,0,5,2
    //第四次,5大于2
3,-1,0,2,5
    至此完成一次内循环,此时最后一个数完成排序,下次将不参与
3,-1,0,2,5第二次外循环开始    第一次:3大于-1
-1,3,0,2,5
    第二次:3大于0
-1,0,3,2,5
    第三次:3大于2
-1,0,2,3,5
    至此完成后面两位数的排序了,接下来类推
-1,0,2,3,5
二、选择排序法    说明:先假设第一个数就是最小的数,然后将后面的数依次与它比较,如果假设的数不是最小的数,就将它与后面的最小的数调换位置

 代码如下 复制代码
$arr=array(2,1,-1,3,0);
for($i=0;$i<count($arr)-1;$i++){
    $minval = $arr[$i];
    $minindex = $i;
    for($j=1+$i;$j<count($arr);$j++){
        if($arr[$j]<$minval){
            $minval = $arr[$j];
            $minindex = $j;
        }
    }
    $temp = $arr[$i];
    $arr[$i] = $arr[$minindex];
    $arr[$minindex] = $temp;
}

理解:
2,1,-1,3,0
    //先假设第一个数2为最小值,它后面的数依次与2做比较,寻找到最小的那个数
过程:
1小于2,那么minval=1
-1小于1,那么minval=-1
3大于-1,不变
0大于-1,不变
那么现在就找到了该数组中最小的数了为-1
将-1与2调换位置就完成第一个数的排序了
那么现在数组变成
-1,1,2,3,0
现在第一个数-1已经为有序,所以不参与比较了,往后面继续
现在假设minval=1
2大于1,不变
3大于1,不变
0小于1,那么minval=0
现在一次循环完成,调换0与1的位置完成第二个数的排序
那么现在数组变成
-1,0,2,3,1
//后面的推法与上面相同。。。
 
三、插入排序法说明:先假设一个数组中的第一个数为单独的有序数组,再将后面的一个数与它【这里随它I的增长,就变成它们了】做比较,如果后面的数比假设的数还小,则将小的那个数后移,最后将那个数移到最前面

 代码如下 复制代码
$arr=array(2,1,-1,3,0);
for($i=1;$i<count($arr);$i++){
    $insertval=$arr[$i];
    $insertindex = $i-1;
    while($insertindex>=0 && $insertval<$arr[$insertindex]){
        $arr[$insertindex+1]=$arr[$insertindex];
        $insertindex--;
    }
    $temp = $arr[$i];
    $arr[$insertindex+1]=$insertval;
}

理解:
2,1,-1,3,0
    //第一次,先保存待插入的数1为insertval,再拿 insertval 与2比较,1小于2,所以把2后移,变成如下的图
2,2,-1,3,0
    //此时2前面没有数字了,insertindex=0,所以比较完成,那么将insertval插入到寻找到的这个位置。变成如下图
1,2,-1,3,0
    //此时,1,2变成有序数组
    //第二次,先保存待插入的数-1为insertval,再拿insertval与2做比较,-1小于2,所以把2后移,变成如下图
1,2,2,3,0
    //此时,再拿insertval与1做比较,-1小于1,那么把-1后移,变成如下图(这就是一个拿待插入数与前面的有序数组比较的过程)
1,1,2,3,0
    //此时,insertindex到头了,所以将insertval插入该位置
-1,1,2,3,0
    //后面推法如上


二维数组排序函数,可以实现类似 MySQL 的 ORDER BY 效果,当数组不是从数据库取得时会有特殊应用。

 

 代码如下 复制代码

<?php
// 说明:PHP中二维数组的排序方法

 
/**
 * @package     BugFree
 * @version     $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $
 *
 *
 * Sort an two-dimension array by some level two items use array_multisort() function.
 *
 * sysSortArray($Array,"Key1","SORT_ASC","SORT_RETULAR","Key2"……)
 * @author                      Chunsheng Wang <wwccss@263.net>
 * @param  array   $ArrayData   the array to sort.
 * @param  string  $KeyName1    the first item to sort by.
 * @param  string  $SortOrder1  the order to sort by("SORT_ASC"|"SORT_DESC")
 * @param  string  $SortType1   the sort type("SORT_REGULAR"|"SORT_NUMERIC"|"SORT_STRING")
 * @return array                sorted array.
 */
function sysSortArray($ArrayData,$KeyName1,$SortOrder1 = "SORT_ASC",$SortType1 = "SORT_REGULAR")
{
    if(!is_array($ArrayData))
    {
        return $ArrayData;
    }
 
    // Get args number.
    $ArgCount = func_num_args();
 
    // Get keys to sort by and put them to SortRule array.
    for($I = 1;$I < $ArgCount;$I ++)
    {
        $Arg = func_get_arg($I);
        if(!eregi("SORT",$Arg))
        {
            $KeyNameList[] = $Arg;
            $SortRule[]    = '$'.$Arg;
        }
        else
        {
            $SortRule[]    = $Arg;
        }
    }
 
    // Get the values according to the keys and put them to array.
    foreach($ArrayData AS $Key => $Info)
    {
        foreach($KeyNameList AS $KeyName)
        {
            ${$KeyName}[$Key] = $Info[$KeyName];
        }
    }
 
    // Create the eval string and eval it.
    $EvalString = 'array_multisort('.join(",",$SortRule).',$ArrayData);';
    eval ($EvalString);
    return $ArrayData;
}
 
//################# 示例 #################
$arr = array(
    array(
        'name'      =>   '学习',
        'size'      =>   '1235',
        'type'      =>   'jpe',
        'time'      =>   '1921-11-13',
        'class'     =>   'dd',
    ),
    array(
        'name'      =>   '中国功夫',
        'size'      =>   '153',
        'type'      =>   'jpe',
        'time'      =>   '2005-11-13',
        'class'     =>   'jj',
    ),
    array(
        'name'      =>   '编程',
        'size'      =>   '35',
        'type'      =>   'gif',
        'time'      =>   '1997-11-13',
        'class'     =>   'dd',
    ),
    array(
        'name'      =>   '中国功夫',
        'size'      =>   '65',
        'type'      =>   'jpe',
        'time'      =>   '1925-02-13',
        'class'     =>   'yy',
    ),
    array(
        'name'      =>   '中国功夫',
        'size'      =>   '5',
        'type'      =>   'icon',
        'time'      =>   '1967-12-13',
        'class'     =>   'rr',
    ),
);
 
print_r($arr);
 
//注意:按照数字方式排序时 153 比 65 小
$temp = sysSortArray($arr,"name","SORT_ASC","type","SORT_DESC","size","SORT_ASC","SORT_STRING");
 
print_r($temp);
 
?>

至于一维数组排序我们用php自带的函数就可以完全实现数据排序了,所以我们讲到的都是相对用自定函数无法完成我们需求的做法了。

关键词高亮在php中实现相对很简单,他只需要获取利用提取过来的关键词进行分词然后再利用str_replace()函数来实现替换就可以原理相对很简单。

项目结构:

开始搜索:   这里搜索关键字("大""这")

开始搜索:   这里搜索关键字("大""这")

搜索结果:  高亮显示

项目所需数据库结构:

数据库连接文件

 代码如下 复制代码
<?php
$conn = @ mysql_connect("localhost", "root", "") or die("数据库链接错误");
mysql_select_db("form", $conn);
mysql_query("set names 'gbk'");
?>

给加色的searchAndDisplayWithColor.php文件

 代码如下 复制代码

<?php
 include 'conn.php';
 ?>
 
 <table width=500 align="center">
     <form action="" method="get">
     <tr>
         <td>关键字:<input type="text" name="keyWord" />
         <input type="submit" value="搜索" /></td>
     </tr>
     </form>
 </table>
 
 <table width=500 border="0" align="center" cellpadding="5"
     cellspacing="1" bgcolor="#add3ef">
     <?php
     //关键字不为空的时候才执行相关搜索
     if($_GET['keyWord']){
     //用空格符把关键字分割开
     $key=explode(' ', $_GET[keyWord]);
     $sql="select * from message where title like '$key[0]' or title like '$key[1]' or content like '$key[0]' or content like '%$key[1]%'";
     $query=mysql_query($sql);
     while ($row=mysql_fetch_array($query)){
         //替换关键字,并且把关键字高亮显示
         $row[title]=preg_replace("/$key[0]/i", "<font color=red><b>$key[0]</b></font>", $row[title]);
         $row[title]=preg_replace("/$key[0]/i", "<font color=red><b>$key[1]</b></font>", $row[title]);
         $row[content]=preg_replace("/$key[0]/i", "<font color=red><b>$key[0]</b></font>", $row[content]);
         $row[content]=preg_replace("/$key[1]/i", "<font color=red><b>$key[1]</b></font>", $row[content]);
         ?>
 
     <tr bgcolor="#eff3ff">
         <td>标题:<font color="black"><?=$row[title]?></font> 用户:<font color="black"><?=$row[user] ?></font>
         <div align="right"><a href="preEdit.php?id=<?=$row[id]?>">编辑</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a
             href="delete.php?id=<?=$row[id]?>">删除</a></div>
         </td>
     </tr>
     <tr bgColor="#ffffff">
         <td>内容:<?=$row[content]?></td>
     </tr>
     <tr bgColor="#ffffff">
         <td>
         <div align="right">发表日期:<?=$row[lastdate]?></div>
         </td>
     </tr>
     <?php }
     }
     ?>
 </table>

说明:在这个小程序中,有一点不足之处在于,只能同时搜索两个关键字,并且中间用空格" "隔开,如果只是搜索一个关键字,如:"大"
显示的时候会出现乱码 ……^|_|^,这是由于下面代码的结果:

用空格符把关键字分割开

 代码如下 复制代码
$key=explode(' ', $_GET[keyWord]);

如果要改进的话,在这里的后面就要做一下判断了。

总结,

上面的关键词高亮只是一个非常简单的用户提交过来什么我们就对这个关键词进行了str_replace进行高亮显示了,如果要做得更好可利用dedecms分词系统进行分词再操作会好很多哦。

关于dedecms分词程序实现方法可参考

一个用PHP写的中文分词函数

http://www.111cn.net/phper/24/c8b9ff7300e56c042014a655b0bd6e34.htm

中文分词的php代码

http://www.111cn.net/phper/php-gj/39302.htm

php做的简单中文分词代码

http://www.111cn.net/phper/php-gj/38506.htm

[!--infotagslink--]

相关文章

  • PHP 验证码不显示只有一个小红叉的解决方法

    最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
  • jQuery Real Person验证码插件防止表单自动提交

    本文介绍的jQuery插件有点特殊,防自动提交表单的验证工具,就是我们经常用到的验证码工具,先给大家看看效果。效果图如下: 使用说明 需要使用jQuery库文件和Real Person库文件 同时需要自定义验证码显示的CSS样式 使用实例...2015-11-08
  • JS实现随机生成验证码

    这篇文章主要为大家详细介绍了JS实现随机生成验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-06
  • php二维码生成

    本文介绍两种使用 php 生成二维码的方法。 (1)利用google生成二维码的开放接口,代码如下: /** * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 * @param strin...2015-10-21
  • Java生成随机姓名、性别和年龄的实现示例

    这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
  • C#生成随机数功能示例

    这篇文章主要介绍了C#生成随机数功能,涉及C#数学运算与字符串操作相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • jQuery为动态生成的select元素添加事件的方法

    下面小编就为大家带来一篇jQuery为动态生成的select元素添加事件的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-09-01
  • Jquery插件实现点击获取验证码后60秒内禁止重新获取

    通过jquery.cookie.js插件可以快速实现“点击获取验证码后60秒内禁止重新获取(防刷新)”的功能效果图:先到官网(http://plugins.jquery.com/cookie/)下载cookie插件,放到相应文件夹,代码如下:复制代码 代码如下: <!DOCTYPE ht...2015-03-15
  • php生成唯一数字id的方法汇总

    关于生成唯一数字ID的问题,是不是需要使用rand生成一个随机数,然后去数据库查询是否有这个数呢?感觉这样的话有点费时间,有没有其他方法呢?当然不是,其实有两种方法可以解决。 1. 如果你只用php而不用数据库的话,那时间戳+随...2015-11-24
  • PHP自动生成后台导航网址的最佳方法

    经常制作开发不同的网站的后台,写过很多种不同的后台导航写法。 最终积累了这种最写法,算是最好的吧...2013-09-29
  • php实现点击可刷新验证码

    验证码类文件 CreateImg.class.php <&#63;php class ValidationCode { private $width,$height,$codenum; public $checkcode; //产生的验证码 private $checkimage; //验证码图片 private $disturbColor = ''; /...2015-11-08
  • 基于JavaScript实现验证码功能

    这篇文章主要介绍了基于JavaScript实现验证码功能的相关资料...2017-04-03
  • js生成随机数的方法实例

    js生成随机数主要用到了内置的Math对象的random()方法。用法如:Math.random()。它返回的是一个 0 ~ 1 之间的随机数。有了这么一个方法,那生成任意随机数就好理解了。比如实际中我们可能会有如下的需要: (1)生成一个 0 - 1...2015-10-21
  • 单击按钮发送验证码,出现倒计时的简单实例

    下面小编就为大家带来一篇单击按钮发送验证码,出现倒计时的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 代码...2017-07-06
  • Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法

    这篇文章主要介绍了Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-06-24
  • PHP验证码生成与验证例子

    验证码是一个现在WEB2.0中常见的一个功能了,像注册、登录又或者是留言页面,都需要注册码来验证当前操作者的合法性,我们会看到有些网站没有验证码,但那是更高级的验证了,...2016-11-25
  • PHP生成不同颜色、不同大小的tag标签函数

    复制代码 代码如下:function getTagStyle(){ $minFontSize=8; //最小字体大小,可根据需要自行更改 $maxFontSize=18; //最大字体大小,可根据需要自行更改 return 'font-size:'.($minFontSize+lcg_value()*(abs($maxFo...2013-10-04
  • 基于Pytorch版yolov5的滑块验证码破解思路详解

    这篇文章主要介绍了基于Pytorch版yolov5的滑块验证码破解思路详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-25
  • jQuery实现发送验证码控制按钮禁用功能

    最近接到新需求,需要实现一个点击发送验证码之后,按钮禁用,在5秒之后取消禁用,看似需求很简单,实现起来还真的好好动动脑筋,下面小编把jquery控制按钮禁用核心代码分享给大家,需要的朋友参考下吧...2021-07-24
  • 工信部的ICP备案网站登录时验证码一直输入不正确怎么回事

    工信部的ICP备案网站登录时验证码一直输入不正确怎么回事,为了防止一些机器采集人工信部对于查询验证做得识别度极低,所以许多的朋友都会发现输入验证码一直有问题了,那...2016-10-10