php内容关键字替换的函数分享

发布时间:2019-08-03编辑:脚本学堂
本文分享一个php实现的内容关键字替换的函数,精巧实用,效果不错,有需要的朋友参考下吧。

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

例子:
 

复制代码 代码示例:

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

$arr=array(
"鞋子"=>"<a href='index.html'>鞋子</a>",
"袜子"=>"<a href='wazi.html'>袜子</a>",
"裙子"=>"<a href='qunzi.html'>裙子</a>",
"连衣裙"=>"<a href='连衣裙.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;
}