当前位置:  编程技术>php
本页文章导读:
    ▪PHP文章内链实例代码 php关键词替换且只替换一次      本节主要内容: 一个php实现的文章内链代码。 说明:本函数可以只替换一个字符。 函数参数:   $needkeywords --- 需要替换的字符串 $replacekeywords --- 替换成什么字符串 $content --- 需要操作的.........
    ▪php关键字替换类的实例代码      本节主要内容: php关键字替换类,md5加密后替换,防止重复替换。 1,php关键字替换类   代码示例: <?php /** *   关键字 替换类  替换(随机位置) 且指定数量的关键词     先对关键字 .........
    ▪php内容关键字替换的函数分享      本节主要内容: 一个php实现的内容关键字替换的函数。 例子:   代码示例: <?php /** * 内容关键字替换 * by www. */ $arr=array( "鞋子"=>"<a href='/blog_article/index.html'>鞋子</a>", "袜子"=>"<a.........

[1]PHP文章内链实例代码 php关键词替换且只替换一次
    来源: 互联网  发布时间: 2013-12-24

本节主要内容:
一个php实现的文章内链代码。

说明:本函数可以只替换一个字符。
函数参数:
 

$needkeywords --- 需要替换的字符串
$replacekeywords --- 替换成什么字符串
$content --- 需要操作的字符串

代码:
 

代码示例:

<?php
/**
* 文章内链、关键词替换
* by www.
*/
function str_replace()_once($needkeywords, $replacekeywords,$content ) {
   $pos = strpos($content, $needkeywords);
   if ($pos === false) {
      return $content ;
   }
   return substr_replace($content, $replacekeywords, $pos, strlen($needkeywords));
}

//$_GET['data']:把要替换的关键词ID用","号隔开放在data中
//$_GET['ClassID']:要传入的分类ID,判断要替换的文章的关键词内链
//keywords_set:为要导入的关键词表
if(isset()($_GET['data'])){
    $keyrowds=explode()(",",$_GET['data']);  
    foreach($keyrowds as $val){
//根据ID查询关键词表
        $sqlkey="select *from keywords_set where ID=".$val;
        $resultkey=@mysql_query()($sqlkey);
        $rowskey=mysql_fetch_assoc($resultkey);
//取出关键词及其相关链接路径装入$contents中
        $contents[]=array(
        'Name'=>$rowskey['Name'],
        'LinkUrl'=>$rowskey['LinkUrl']
        );
    }
//article:文章表,通过$_GET['ClassID']提取所有要替换的文章
    $Sql="select* from article where classID='".$_GET['ClassID']."'";
    $Result=@mysql_query($Sql);
    while($rows=mysql_fetch_assoc($Result))
    {
        $contentkey=$rows['content'];//文章内容字段
        foreach($contents as $value){
//更新关键词库
        $sqlupdate="update keywords_set set PostAddtime='".date("Y-m-d",time())."' where Name='".$value['Name']."'";
        $resultupdate=@mysql_query($sqlupdate);//执行更新SQL语句
        //组合成内链
            $contentkeys="".$value['Name']."";
//判断如果为导入内链则替换,否则去掉替换        
            if($_GET['flg']=="insert"){
                $contentkey=str_replace_once($value['Name'],$contentkeys,$contentkey);
            }
            if($_GET['flg']=="out"){
            $contentkey=str_replace($contentkeys,$value['Name'],$contentkey);
            }
        }
        //更新文章内链
        $sqlupdate="update article set content='".$contentkey."' where articleID=".$rows['articleID'];
        $resultupdate=@mysql_query($sqlupdate);
    }
}


    
[2]php关键字替换类的实例代码
    来源: 互联网  发布时间: 2013-12-24

本节主要内容:
php关键字替换类,md5加密后替换,防止重复替换。

1,php关键字替换类
 

代码示例:

<?php
/**
*   关键字 替换类  替换(随机位置) 且指定数量的关键词
    先对关键字 md5加密(若关键字之间有重字部分,md5加密,可防止重复替换),替换标志/&--&/
    /*---*/
/*    替换成/*md5*/
/*    最后用 关键词 替换掉 **形式
* by www.
*/
class KeyReplace{
    public $KeyArray;  //关键字
    public $HtmlString; //文字内容
    public $ArrayCount; //关键字 的 个数

    /*
        初始化:
        $keyArray 关键字 数组
        $String   检索字域,文字
    */
    function KeyReplace($KeyArray,$String){
       $this->KeyArray=$KeyArray;
       $this->HtmlString=$String;
       $this->ArrayCount=count($KeyArray);
    }

    /*
        关键字 按长度排序
    */
    function KeyOrderBy(){
        for($i=0;$i<$this->ArrayCount-1;$i++){
            for($j=$i+1;$j<$this->ArrayCount;$j++){
                $TempArray=array();
                if(strlen($this->KeyArray[$i]["Key"])<strlen($this->KeyArray[$j]["Key"])){
                    $TempArray=$this->KeyArray[$i];
                    $this->KeyArray[$i]=$this->KeyArray[$j];
                    $this->KeyArray[$j]=$TempArray;
                }

            }
       }
       // 中国  呵呵 国  中
    }

    function Replaces(){

        for($i=0;$i<$this->ArrayCount;$i++){

            if((integer)$this->KeyArray[$i]['ReplaceNumber'] != 0 ){
                str_replace()($this->KeyArray[$i]["Key"],"/*".md5($this->KeyArray[$i]["Key"])."*/",$this->HtmlString,$num);//$num查询到的数量

                if((integer)$this->KeyArray[$i]['ReplaceNumber']>$num) {//当关键词 需要替换的数量 大于 包含的数量时,替换全部
                    $this->KeyArray[$i]['ReplaceNumber']=$num;
                    $this->HtmlString=str_replace($this->KeyArray[$i]["Key"],"/*".md5($this->KeyArray[$i]["Key"])."*/",$this->HtmlString);
                    continue;
                }
                //当关键词 需要替换的数量 不大于 包含的数量时,使用 KeyStrpos($i);方法替换
                $ListNumber=array();
                $ListNumber=$this->KeyStrpos($i);//$i: 表示第$i个关键词($i从0开始)
                $RegArray=array();

                if(count($ListNumber)<1) continue;//不存在 关键词

                $n=0;
                while($n<(integer)$this->KeyArray[$i]["ReplaceNumber"]){
                    $g=0;
                    $x=rand(0,count($ListNumber)-1);//随机数
                    for($xcn=0;$xcn<=$n;$xcn++){
                        if($RegArray[$xcn]==$ListNumber[$x]){
                            $g=1;
                        }
                    }
                    if($g==0){
                        $RegArray[$n]=$ListNumber[$x];
                        $n++;
                    }
                }

                for($c=0;$c<count($RegArray)-1;$c++)
                {//关键词所在位置 递增排序
                    for($jx=$c+1;$jx<count($RegArray);$jx++){
                        if($RegArray[$c]>$RegArray[$jx]){
                            $TempArray=$RegArray[$c];
                            $RegArray[$c]=$RegArray[$jx];
                            $RegArray[$jx]=$TempArray;
                        }
                    }
                }

                for($c=0;$c<count($RegArray);$c++){
                    $this->StrposKey($this->KeyArray[$i]["Key"],$RegArray[$c],$c);// 逐位(索引位) 替换截取到的关键字
                }

               $this->HtmlString=str_replace("/&".md5($this->KeyArray[$i]["Key"])."&/",$this->KeyArray[$i]["Key"],$this->HtmlString);
            }else{
               $this->HtmlString=str_replace($this->KeyArray[$i]["Key"],"/*".md5($this->KeyArray[$i]["Key"])."*/",$this->HtmlString);
            }
       }

       for($i=0;$i<$this->ArrayCount;$i++){
           $this->HtmlString=str_replace("/*".md5($this->KeyArray[$i]["Key"])."*/",$this->KeyArray[$i]["Href"],$this->HtmlString);
       }
    }

    function StrposKey($Key,$StrNumber,$n){//在字符串里 截取关键字 并替换,从$StrNumber这个位置开始(包含$StrNumber这个位置)替换到$n(包含$n这个位置)这个位置
       $this->HtmlString=substr_replace($this->HtmlString, "/*".md5($Key)."*/", $StrNumber, 36);
    }

    /* 递归 查找 关键词 所在的位置 存于数组中 */
    function KeyStrpos($KeyId){
        $StrListArray=array();
        $StrNumberss=strpos($this->HtmlString, $this->KeyArray[$KeyId]["Key"]);
        $xf=0;
        while(!($StrNumberss===false)){
            $StrListArray[$xf]=$StrNumberss;
            $this->HtmlString=substr_replace($this->HtmlString,"/&".md5($this->KeyArray[$KeyId]["Key"])."&/",$StrNumberss, strlen($this->KeyArray[$KeyId]["Key"]));
            $StrNumberss=strpos($this->HtmlString, $this->KeyArray[$KeyId]["Key"]);
            $xf++;
        }
        return $StrListArray;
    }
}
?>

2,php关键字替换类的调用示例
 

代码示例:

<?php
$KeyArray1=Array(
    0=>array("Key"=>"中国","Href"=>"<a href='/blog_article/中国/index.html'>中国</a>","ReplaceNumber"=>1),
    1=>array("Key"=>"中","Href"=>"<a href='/blog_article/中/index.html'>中</a>","ReplaceNumber"=>1),
    2=>array("Key"=>"国","Href"=>"<a href='/blog_article/国/index.html'>国</a>","ReplaceNumber"=>1),
    3=>array("Key"=>"呵呵","Href"=>"<a href='/blog_article/呵呵/index.html'>呵呵</a>","ReplaceNumber"=>0)
);
$KeyArray=Array(
    0=>array("Key"=>"中国","Href"=>"<a href='/blog_article/中国/index.html'>中国</a>","ReplaceNumber"=>1),//只替换一个‘中国’
    1=>array("Key"=>"人","Href"=>"<a href='/blog_article/人/index.html'>人</a>","ReplaceNumber"=>1),
    2=>array("Key"=>"我","Href"=>"<a href='/blog_article/我/index.html'>我</a>","ReplaceNumber"=>1),
    3=>array("Key"=>"呵呵","Href"=>"<a href='/blog_article/呵呵/index.html'>呵呵</a>","ReplaceNumber"=>0)//全部替换
);
$str = "呵呵!中国人民站起来了,中国,我的祖国,呵呵!中国是我们的,中国也是你们的,中国人民严厉谴责他们,我们中国人就是OK12呵呵!";
$a = new KeyReplace($KeyArray,$str);
$a->KeyOrderBy();
$a->Replaces();

//header("content-type: text/html; charset=utf-8");//设置页面编码
echo $a->HtmlString;
?>


    
[3]php内容关键字替换的函数分享
    来源: 互联网  发布时间: 2013-12-24

本节主要内容:
一个php实现的内容关键字替换的函数。

例子:
 

代码示例:

<?php
/**
* 内容关键字替换
* by www.
*/

$arr=array(
"鞋子"=>"<a href='/blog_article/index.html'>鞋子</a>",
"袜子"=>"<a href='/blog_article/wazi.html'>袜子</a>",
"裙子"=>"<a href='/blog_article/qunzi.html'>裙子</a>",
"连衣裙"=>"<a href='/blog_article/连衣裙.html'>连衣裙</a>",
);
$str="鞋子 袜子 鞋子 袜子 鞋子 袜子 鞋子 袜子 裙子 连衣裙";
$str=replacelink($str,$arr,3);
echo $str;

public function replacelink($str,$arr,$maxcount=3000){
//匹配出图片
preg_match_all("/(<img[^>]*>)/iUs",$str,$imgs);
preg_match_all("/(<a.*>.*<\/a>)/iUs",$str,$links);
//替换图片和链接
if($links[1]){
foreach($links[1] as $k=>$v){
$str=str_replace()($v,"@links_$k",$str);
}
}
if($imgs[1]){
foreach($imgs[1] as $k=>$v){
$str=str_replace($v,"@imgs_$k",$str);
}
}
//匹配结束
$str=strtr($str,$arr);
preg_match_all("/(<a.*>.*<\/a>)/iUs",$str,$a);
$a=$a[1];
$c=array_count_values($a);
if($c){
$kk=0;
foreach($c as $k=>$v){
if($v){
if($kk<$maxcount){
$v=$v-1;
}
$str=preg_replace("/".$this->replace_quote($k)."/i",str_replace("#","",strip_tags()($k)),$str,$v);
}
$kk++;
}
}
//还原图片跟链接
if($links[1]){
foreach($links[1] as $k=>$v){
$str=str_replace("@links_$k",$v,$str);
}
}
if($imgs[1]){
foreach($imgs[1] as $k=>$v){
$str=str_replace("@imgs_$k",$v,$str);
}
}
return $str;
}

function replace_quote($str){
$str=preg_quote($str);
$str=str_replace("/","\/",$str);
return $str;
}


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3