php自动给文章加关键词链接的函数代码


Posted in PHP onNovember 29, 2012
<?php 
$link = array( 
'百度,http://www.baidu.com/', 
'服务器软件,http://s.3water.com/', 
'三水点靠木,https://3water.com/', 
); 
$str = '在百度中搜索服务器软件就可以到三水点靠木提供的软件<br /> 
夏季不再穿长筒袜近年成为一种时尚,甚至到了秋天也不例外。<br /> 
专家提出,其实这种时尚不利于美腿。据悉,久坐久站缺少运动等原因易导致静脉曲张,尤其是长期站立工作的人,容易引起下肢静脉本身扩张、延长或静脉瓣膜损坏以至发病。具体表现为腿部肿胀,下肢静脉犹如蚯蚓状弯曲或结节成团,皮肤发紫,特别是踝和小腿内侧更为严重。<br /> 
专家指出,长期站立工作的人或多或少都有一些下肢静脉曲张的表现,只是轻重程度不一样。下肢静脉曲张是一种治疗起来比较麻烦的疾病,严重的需要手术,所以最好的方法还是防患于未然,在症状尚不明显的时候,就采取防范措施,穿长筒弹力袜就是一种很好的方法,可帮助血液进入较大且较深处的静脉。<br /> 
保持理想体重,可减少静脉曲张的机会;避免紧身衣物,穿医用弹力袜,以免使血液聚积在腿部;小心食用避孕药,某些避孕药可能引起这种问题。'; 
$out=keylink($str,$link,1); //$str 原始字符 $link,替换链接数组, 3替换次数 
echo $out; 
function _sortDesc($a, $b) { 
return (strlen($a[0]) < strlen($b[0])) ? 1 : -1; 
} 
function keylink($str,$link,$count=1) 
{ 
$linkDefs = $link; 
$linkMap = array(); 
foreach($linkDefs as $row) { 
$linkMap[] = explode(',', $row); 
} foreach($linkMap as $row) { 
$str = preg_replace('/(<a.*?>\s*)('.$row[0].')(\s*<\/a>)/sui', '${2}', $str); 
} 
usort($linkMap, '_sortDesc'); 
$tmpKwds = array(); 
foreach($linkMap as $i=>$row) { 
list($kwd, $url) = $row; 
for($j=$i+1; $j<count($linkMap); $j++) { 
$subKwd = $linkMap[$j][0]; 
//如果包含其他关键字,暂时替换成其他字符串 
if(strpos($kwd, $subKwd) !== false) { 
$tmpKwd = '{'.md5($subKwd).'}'; 
$kwd = str_replace($subKwd, $tmpKwd, $kwd); 
$tmpKwds[$tmpKwd] = $subKwd; 
} 
} 
//把文字替换成链接 
$str = preg_replace('/('.$row[0].')/sui', '<a href="'.$row[1].'" target="_blank">'.$kwd.'</a>', $str, $count); 
} 
//把代替子关键字的字符串替换回来 
foreach($tmpKwds as $tmp=>$kwd) { 
$str = str_replace($tmp, $kwd, $str); 
} 
return $str; 
} 
?>
PHP 相关文章推荐
Discuz 模板引擎的封装类代码
Jul 18 PHP
一些 PHP 管理系统程序中的后门
Aug 05 PHP
PHP用GD库生成高质量的缩略图片
Mar 09 PHP
PHP中实现中文字符进制转换原理分析
Dec 06 PHP
destoon实现商铺管理主页设置增加新菜单的方法
Jun 26 PHP
PHP中的插件机制原理和实例
Jul 08 PHP
thinkphp3.x中cookie方法的用法分析
May 19 PHP
php 输出json及显示json中的中文汉字详解及实例
Nov 09 PHP
PHP环境搭建(php+Apache+mysql)
Nov 14 PHP
php中__toString()方法用法示例
Dec 07 PHP
laravel Model 执行事务的实现
Oct 10 PHP
php 的多进程操作实践案例分析
Feb 28 PHP
PHP文章按日期(月日)SQL归档语句
Nov 29 #PHP
PHP以及MYSQL日期比较方法
Nov 29 #PHP
有道搜索和IP138的IP的API接口(PHP应用)
Nov 29 #PHP
PHP提示Notice: Undefined variable的解决办法
Nov 24 #PHP
php如何调用webservice应用介绍
Nov 24 #PHP
PHP读取PDF内容配合Xpdf的使用
Nov 24 #PHP
PHP得到mssql的存储过程的输出参数功能实现
Nov 23 #PHP
You might like
解析htaccess伪静态的规则
2013/06/18 PHP
9个经典的PHP代码片段分享
2014/12/18 PHP
浅谈php中的循环while、do...while、for、foreach四种循环
2016/11/05 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
2010/04/15 Javascript
jquery插件开发之实现google+圈子选择功能
2014/03/10 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
AngularJS 使用$sce控制代码安全检查
2016/01/05 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
2016/06/01 Javascript
jQuery实现发送验证码并60秒倒计时功能
2016/11/25 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
详解JS中的this、apply、call、bind(经典面试题)
2017/09/19 Javascript
Vue组件中slot的用法
2018/01/30 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
vue项目中引入Sass实例方法
2019/08/27 Javascript
[01:59]DOTA2首部纪录片《Free to play》预告片
2014/03/12 DOTA
[00:32]2018DOTA2亚洲邀请赛Liquid出场
2018/04/03 DOTA
Python制作钉钉加密/解密工具
2016/12/07 Python
python实现下载文件的三种方法
2017/02/09 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
2018/04/18 Python
详解如何通过H5(浏览器/WebView/其他)唤起本地app
2017/12/11 HTML / CSS
日本土著品牌,综合型购物网站:Cecile
2016/08/23 全球购物
专科毕业生自我鉴定
2013/12/01 职场文书
企业申诉管理制度
2014/01/30 职场文书
倡议书格式
2014/04/14 职场文书
2014年汽车销售工作总结
2014/12/01 职场文书
七年级地理教学计划
2015/01/22 职场文书
Linux中如何安装并部署Redis
2022/04/18 Servers
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
2022/04/20 MySQL