php实现文章中关键词加链接的方法

php中文网
发布: 2016-07-25 09:11:03
原创
1685人浏览过
  1. $keywordArray = array(
  2. array('进程', 'http://www.01happy.com/linux-ps-view-process/')
  3. ,array('守护进程', 'http://www.01happy.com/linux-python-daemon/')
  4. );
复制代码

二维数组排序可以使用内置函数usort,代码如下:

  1. usort($keywordArray, function($a, $b) {
  2. $al = strlen($a[0]);
  3. $bl = strlen($b[0]);
  4. if ($al == $bl)
  5. return 0;
  6. return ($al > $bl) ? -1 : 1;
  7. });
复制代码

提取出所有html标签

  1. preg_match_all('/]*>/', $content, $match);
  2. if (isset($match[0])) {
  3. $htmlTagArray = $match[0];
  4. }
复制代码

这边的正则就是将包着的内容都提取出来,笔者认为凡是需要将号当成内容显示的,都应当用转义字符包着的内容都可以认为是标签。事实上浏览器也是这么干的,很多在线的文本编辑器也会自动转义这些字符。

分割内容,保存到数组 $noTagContentArray = preg_split('/]*>/', $content);

这边用的正则表达式和上面提取html标签用的正则一致。

法语写作助手
法语写作助手

法语助手旗下的AI智能写作平台,支持语法、拼写自动纠错,一键改写、润色你的法语作文。

法语写作助手 31
查看详情 法语写作助手

循环分割的内容数组,替换关键词链接 这边的处理方式是先将关键词替换成md5值,再将md5值替换成带链接的关键词,之所以这么处理,是为了解决关键词之间包含的情况。另外,笔者曾经考虑将分割的内容数组implode成一个字符串,就不用循环替换了,但是担心implode之后的字符串在拼接处会形成关键词,所以就没这么处理。

组合提取的html标签和处理后的内容 这步就比较简单了,依次拼接就OK了。需要注意的是html标签数组会比分割的内容数组长度小1,所以在取标签时,要用isset来判断下。 以上内容经多次测试没有问题,如有疑问,欢迎进入本站QQ群:161228069 沟通交流。



PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号