首页 >php教程 >php手册 > 正文

PHP正则表达式替换站点关键字链接后空白的解决方法,正则表达式关键字

原创2016-06-13 09:25:240245

PHP正则表达式替换站点关键字链接后空白的解决方法,正则表达式关键字


标题这样不知道合适不合适。具体的情况是这样的:网站要增加关键字链接功能,然后需要对文章的内容进行正则表达式匹配并替换,然后使用了preg_replace函数。替换的程序代码如下:

function ReplaceKeyword($linkDefs,$content){
$linkMap = array();

/*foreach($linkDefs as $row) {
$linkMap[] = explode(',', $row);
}*/
$linkMap = $linkDefs;

//把原有的链接替换成文字
foreach($linkMap as $row) {
$content = preg_replace('/(\s*)('.$row[0].')(\s*<\/a>)/sui', $row[0], $content);
}

//关键字从长至短排序
usort($linkMap, '_sortDesc');
//var_dump($linkMap);

$tmpKwds = array(); //存放暂时被替换的子关键字

$k_count=0;
foreach($linkMap as $i=>$row) {
list($kwd, $url) = $row;
for($j=$i+1; $j'.$kwd.'', $content, $th_num ,$count); // 所有的匹配项都会被替换
$k_count+=$count;
}

//把代替子关键字的字符串替换回来
foreach($tmpKwds as $tmp=>$kwd) {
$content = str_replace($tmp, $kwd, $content);
}
$result = array($content,$k_count);

return $result;
unset($result);
unset($tmp);
unset($tmpKwds);
unset($kwd);
unset($count);
unset($config);
unset($linkMap);
unset($linkDefs);
unset($tmpKwd);
unset($content);
unset($th_num);
unset($row);
unset($k_count);
}

程序是从网上找的,然后在本地测试是正常的,本地环境为php 5.3 服务是5.2的,上传到网上去后,提交则显示空白,一开始考虑是PHP版本问题,以为是ereg preg的区别,替换后还是不行。后来网上看,发现有网友说调整大pcre.backtrack_limit和pcre.recursion_limit就行,我试了下,果然可以了。看来是配置问题,不过一般情况下,PHP的默认配置应该没啥问题,我自己写的这程序还是不够好!


php正则表达式问题,下面是一个,替换关键字为链接的程序

我这样写都可以啊,用IE6,FIREFOX 3.0 都试过了,没问题。



New Document </TITLE><br /> <META NAME="Generator" CONTENT="EditPlus"><br /> <META NAME="Author" CONTENT=""><br /> <META NAME="Keywords" CONTENT=""><br /> <META NAME="Description" CONTENT=""><br /> </HEAD><br /><br /> <BODY><br /> Xhtml Linux <br /> </BODY><br /> <script language="JavaScript"> <br /> document.body.innerHTML = document.body.innerHTML.replace(/(x)|(l)/gi,"<font color=red>$1$2</font>"); <br /></script><br /></HTML><br /><br />以下是通过FIREFOX 3.0 得到的BODY的innerHTM<br /> <font color="red">X</font>htm<font color="red">l</font> <font color="red">L</font>inu<font color="red">x</font> <br /> <script><font color=red>l</font>anguage="JavaScript"> <br /> document.body.innerHTM<font color=red>L</font> = document.body.innerHTM<font color=red>L</font>.rep<font color=red>l</font>ace(/(<font color=red>x</font>)|(<font color=red>l</font>)/gi,"<font co<font color=red>l</font>or=red>$1$2</......余下全文>><br/>  </br> <p class="header2"><span class="icon i-relatedanswer"><h3>PHP正则表达式替换超链接</h3></span></p><p class="best-replyer"></p> <p class="ft p1">用str_replace函数<br/>  </span><div class='share layui-clear bdsharebuttonbox'><li ><a href='javascript:;' data-cmd="weixin" class='wechat'><i class="layui-icon"></i>微信</a></li><li ><a href='javascript:;' data-cmd="more" class='share-btn'><i class="layui-icon"></i>分享</a></li></div><img src="/static/images/article_wechat2021.jpg?1111" style="margin-top: 30px;" alt="php中文网最新课程二维码"/><!--<a href="//m.sbmmt.com/k.html" target="_blank"><img src="https://img.php.cn/upload/article/000/000/003/60d557b50f89a276.jpg" style="margin-top: 30px;" alt="php中文网直播班"/></a>--><p style="float:right;font-size:13px;color:#999;"><span class="red">声明:</span>本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理</p><div class='tags layui-clear'><li>相关标签:<a href="//m.sbmmt.com/search?word=正则表达式" target="_blank">正则表达式</a> <a href="//m.sbmmt.com/search?word=关键字" target="_blank">关键字</a> <a href="//m.sbmmt.com/search?word=" target="_blank"></a></li><li class='line'></li></div><div class='page layui-clear'><ul><li>上一篇:<a href="//m.sbmmt.com/php-notebook-168890.html">一个php生成16位随机数的代码(两种方法),16位随机数</a></li><li>下一篇:<a href="//m.sbmmt.com/php-notebook-168892.html">PHP微信公众开发笔记(五)</a></li></ul></div></div><p class="article-relative-header">相关文章</p><p class="article-relative-header">相关视频</p><hr class="layui-clear"><ul class="article-relative-ul"><li><span class="layui-badge-dots"></span><a class="relevant" href="//m.sbmmt.com/php-notebook-163589.html" target="_blank">最完整PHP常用工具类大全,</a></li><li><span class="layui-badge-dots"></span><a class="relevant" href="//m.sbmmt.com/php-notebook-164528.html" target="_blank">php检查字符串中是否有外链的方法,php字符串</a></li><li><span class="layui-badge-dots"></span><a class="relevant" href="//m.sbmmt.com/php-notebook-168742.html" target="_blank">两千行代码的PHP学习笔记汇总,两千行php学习笔...</a></li><li><span class="layui-badge-dots"></span><a class="relevant" href="//m.sbmmt.com/php-notebook-168891.html">PHP正则表达式替换站点关键字链接后空白的解决方法...</a></li></ul><ul class="article-relative-ul"><li><span class="layui-badge-dots"></span><a class="relevant" href="//m.sbmmt.com/code/104.html" target="_blank" title='PHP开发基础教程之正则表达式中的原子'>PHP开发基础教程之正则表达式中的原子</a></li><li><span class="layui-badge-dots"></span><a class="relevant" href="//m.sbmmt.com/code/145.html" target="_blank" title='PHP开发基础教程之正则表达式中的元字符'>PHP开发基础教程之正则表达式中的元字符</a></li><li><span class="layui-badge-dots"></span><a class="relevant" href="//m.sbmmt.com/code/153.html" target="_blank" title='PHP开发基础教程之正则表达式中的模式修正符'>PHP开发基础教程之正则表达式中的模式修正符</a></li><li><span class="layui-badge-dots"></span><a class="relevant" href="//m.sbmmt.com/code/183.html" target="_blank" title='PHP正则表达式'>PHP正则表达式</a></li><li><span class="layui-badge-dots"></span><a class="relevant" href="//m.sbmmt.com/code/287.html" target="_blank" title='PHP 新手入门之正则表达式'>PHP 新手入门之正则表达式</a></li></ul><div class="layui-clear"></div></div><div class="comment layui-clear CopyrightData"><div class="J_Header" id="J_Header"><p class="header-title">网友评论</p><p class="header-protocol">文明上网理性发言,请遵守 <a href="javascript:void(0);">新闻评论服务协议</a></p><a class="article-comment-publish" href="javascript:void(0);">我要评论</a></div><div class="layui-row diy-page"></div><div class="text-box layui-clear article_comment_textarea" ><div class="box-left"><li><a href="javascript:login_trigger()"><img src="/static/images/user_avatar.jpg" alt=""></a></li><li><a href="javascript:login_trigger()"></a></li></div><div class="box-right"><textarea name="desc" placeholder="请输入内容" class="layui-textarea article_textarea"></textarea><button class="layui-btn article_publish" data-id="168891">立即提交</button></div></div></div><div class="article-hot layui-clear" style="margin-top:0"><h2>专题推荐</h2><ul><li><a href="//m.sbmmt.com/map/dugu.html" target="_blank"><img src="https://img.php.cn/upload/article/000/000/003/5d1ef1e9e866e635.jpg"></a><a class="course-title" href="//m.sbmmt.com/map/dugu.html" target="_blank">独孤九贱-php全栈开发教程</a><p class="course-type">全栈 <i class="layui-icon layui-icon-user"></i> 100W+</p><p class="course-des">主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门</p></li><li><a href="//m.sbmmt.com/map/yunv.html" target="_blank"><img src="https://img.php.cn/upload/article/000/000/003/5d1ef236ca878949.jpg"></a><a class="course-title" href="//m.sbmmt.com/map/yunv.html" target="_blank">玉女心经-web前端开发教程</a><p class="course-type">入门 <i class="layui-icon layui-icon-user"></i> 50W+</p><p class="course-des">主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门</p></li><li><a href="//m.sbmmt.com/toutiao-409221.html" target="_blank"><img src="https://img.php.cn/upload/article/000/000/003/5d1ef2477c7d7587.jpg"></a><a class="course-title" href="//m.sbmmt.com/toutiao-409221.html" target="_blank">天龙八部-实战开发教程</a><p class="course-type">实战 <i class="layui-icon layui-icon-user"></i> 80W+</p><p class="course-des">主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习</p></li></ul><div class="clear"></div></div></div><div class="layui-col-md4 article-list-right "><div class="panel"><div class="panel-title">作者信息</div><div id="profile-2"><div class="avatar-wrap"><a href="//m.sbmmt.com/member/1.html" target="_blank" class="avatar-link"><img src="/static/images/user_avatar.jpg" class="func-um_user gravatar avatar avatar-120 um-avatar um-avatar-uploaded"></a></div><div class="profile-info"><p><span class="author-name">php中文网</span><i class="layui-icon layui-icon-auz" title="认证作者"></i></p><p class="author-description">认证0级讲师</p></div></div></div><div class="layui-clear"><a href='javascript:publish_article()' class='layui-btn layui-btn-danger article-add'>发布技术文章</a></div><div class='top-article layui-clear'><div class="layui-tab layui-tab-card"><ul class="layui-tab-title"><li class="layui-this">最新文章</li><li>热门排行</li></ul><div class="layui-tab-content"><div class="layui-tab-item layui-show"><ul><!--<p class='top-img'><a href='//m.sbmmt.com/toutiao-387072.html' target="_blank" title='面对巨额亏损的PHP中文网,我该为情怀买单吗?(猪哥)'><img src='https://img.php.cn/upload/article/000/000/003/5b890a9e4417f872.png' style="width: 100%"></a></p><p class='top-img'><a href='//m.sbmmt.com/k.html' target="_blank" title='php中文网线上直播课'><img src='https://img.php.cn/upload/article/000/000/001/6035cab2b0ea1741.png' style="width: 100%"></a></p> --><p class='top-img'><!--<a href='//m.sbmmt.com/vip.html' target="_blank" title='VIP会员'><img src='https://img.php.cn/upload/article/000/000/003/5f4de931a5deb813.png' style="width: 100%"></a>--><a href='//m.sbmmt.com/k.html?t=2' target="_blank" title='线上直播班'><img src='https://img.php.cn/upload/article/000/000/003/612c790540fb9612.png' style="width: 100%"></a></p><li><a href='//m.sbmmt.com/php-notebook-410152.html' target="_blank" title='在python的开发过程中如何进行单链表的实现(代码)'>在python的开发过程中如何进行单链表的实现(代码)</a></li><li><a href='//m.sbmmt.com/php-notebook-410098.html' target="_blank" title='如何理解Elasticsearch单机双节点集群部署'>如何理解Elasticsearch单机双节点集群部署</a></li><li><a href='//m.sbmmt.com/php-notebook-410086.html' target="_blank" title='如何理解关于memset函数'>如何理解关于memset函数</a></li><li><a href='//m.sbmmt.com/php-notebook-410082.html' target="_blank" title='启动页进入时有短暂黑屏或白屏现象的终极解决方案'>启动页进入时有短暂黑屏或白屏现象的终极解决方案</a></li><li><a href='//m.sbmmt.com/php-notebook-410073.html' target="_blank" title='如何把WebStorm上传代码到Git'>如何把WebStorm上传代码到Git</a></li><li><a href='//m.sbmmt.com/php-notebook-410049.html' target="_blank" title='分布式系统唯一ID生成方案汇总'>分布式系统唯一ID生成方案汇总</a></li><li><a href='//m.sbmmt.com/php-notebook-410044.html' target="_blank" title='如何在远程过程调用(RPC)'>如何在远程过程调用(RPC)</a></li><li><a href='//m.sbmmt.com/php-notebook-410043.html' target="_blank" title='Visual Studio Code中安装go语言插件'>Visual Studio Code中安装go语言插件</a></li></ul></div><div class="layui-tab-item"><ul><p class='top-img'><a href='//m.sbmmt.com/toutiao-387072.html' target="_blank" title='面对巨额亏损的PHP中文网,我该为情怀买单吗?(猪哥)'><img src='https://img.php.cn/upload/article/000/000/003/5b890a9e4417f872.png' style="width: 100%"></a></p><li><a href='//m.sbmmt.com/php-notebook-49083.html' target="_blank" title='php实现图片批量下载到本地实例'>php实现图片批量下载到本地实例</a></li><li><a href='//m.sbmmt.com/php-notebook-234704.html' target="_blank" title='Linux 下 php 转DOC转PDF转SWF实现百度的文库预览功能'>Linux 下 php 转DOC转PDF转SWF实现百度的文库预览功能</a></li><li><a href='//m.sbmmt.com/php-notebook-44850.html' target="_blank" title='php实现图片批量下载到本地实例(可采防盗链) '>php实现图片批量下载到本地实例(可采防盗链) </a></li><li><a href='//m.sbmmt.com/php-notebook-104350.html' target="_blank" title='简单的php文件上传(实例)'>简单的php文件上传(实例)</a></li><li><a href='//m.sbmmt.com/php-notebook-44584.html' target="_blank" title='php判断是否为数字 '>php判断是否为数字 </a></li><li><a href='//m.sbmmt.com/php-notebook-93816.html' target="_blank" title='phpredis中文手册—《redis中文手册》 php版'>phpredis中文手册—《redis中文手册》 php版</a></li><li><a href='//m.sbmmt.com/php-notebook-236956.html' target="_blank" title='PHP聊天室技术讲解'>PHP聊天室技术讲解</a></li><li><a href='//m.sbmmt.com/php-notebook-43368.html' target="_blank" title='PHP下使用富文本过滤器 HTML Purifier 防止xss跨站攻击 '>PHP下使用富文本过滤器 HTML Purifier 防止xss跨站攻击 </a></li></ul></div></div></div></div><div class='article-ad article-course php-news-right-imginfo'><div class='r-title'><i class='layui-icon layui-icon-praise'></i>推荐视频教程</div><li><a href='//m.sbmmt.com/course/179.html' target="_blank" ><img src='https://img.php.cn/upload/course/000/000/003/5a17982d48686254.jpg' alt="javascript初级视频教程" height='60'></a><span><a href='//m.sbmmt.com/course/179.html' target="_blank">javascript初级视频教程</a></span></li><li><a href='//m.sbmmt.com/course/181.html' target="_blank" ><img src='https://img.php.cn/upload/course/000/000/003/5a179283c3885703.jpg' alt="jquery 基础视频教程" height='60'></a><span><a href='//m.sbmmt.com/course/181.html' target="_blank">jquery 基础视频教程</a></span></li></div><div class='article-ad mt-20' id="aritcle_detail_new"><div class='r-title'><i class='layui-icon layui-icon-video'></i>视频教程分类</div><ul class='course-category-lists layui-clear'><li><a href="//m.sbmmt.com/course/list/29/type/2.html" target="_blank"><div class="course-category-child-first">php视频教程</div><div class='course-category-child'></div></a></li><li><a href="//m.sbmmt.com/course/list/11.html" target="_blank"><div class="course-category-child-first">html视频教程</div><div class='course-category-child'></div></a></li><li><a href="//m.sbmmt.com/course/list/12.html" target="_blank"><div class="course-category-child-first">css视频教程</div><div class='course-category-child'></div></a></li><li><a href="//m.sbmmt.com/course/list/17.html" target="_blank"><div class="course-category-child-first">JS视频教程</div><div class='course-category-child'></div></a></li><li><a href="//m.sbmmt.com/course/list/19.html" target="_blank"><div class="course-category-child-first">jQuery视频教程</div><div class='course-category-child'></div></a></li><li><a href="//m.sbmmt.com/course/list/51.html" target="_blank"><div class="course-category-child-first">mysql视频教程</div><div class='course-category-child'></div></a></li><li><a href="//m.sbmmt.com/course/list/33.html" target="_blank"><div class="course-category-child-first">Linux视频教程</div><div class='course-category-child'></div></a></li><li><a href="//m.sbmmt.com/course/list/30.html" target="_blank"><div class="course-category-child-first">Python视频教程</div><div class='course-category-child'></div></a></li></ul></div></div></div></div><!--技术文章--><script src="/static/ueditor/third-party/SyntaxHighlighter/shCore.js?3.1.1"></script><script>article_status = 0;</script><script type="text/javascript" src="/static/js/jquery.min.js"></script><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><iframe src="/ad1.html?14" frameborder="0" style="position: fixed;bottom:0;right:0;z-index:99999;"></iframe><!--<iframe src="/adapp.html?1" frameborder="0" style="position: fixed;bottom:0;right:0;z-index:99999;"></iframe>--><div class="layui-clear layui-bg-black php-ul-li footer_top_margin"><div class="layui-row layui-main" ><div class="layui-col-md9"><ul class="php-float-left"><li><a href="/" target="_blank" title="网站首页">网站首页 </a></li><li><a href="//m.sbmmt.com/course/list/29/type/2.html" target="_blank" title="PHP视频">PHP视频</a></li><li><a href="//m.sbmmt.com/course/list/29/type/4.html" target="_blank" title="PHP实战">PHP实战</a></li><li><a href="//m.sbmmt.com/course/list/29/type/1.html" target="_blank" title="PHP代码">PHP代码</a></li><li><a href="//m.sbmmt.com/course/list/29/type/3.html" target="_blank" title="PHP手册">PHP手册</a></li><li><a href="//m.sbmmt.com/wikis.html" target="_blank" title="词条">词条</a></li><li><a href="//m.sbmmt.com/write.html" target="_blank" title="手记">手记</a></li><li><a href="//m.sbmmt.com/dic.html" target="_blank" title="手记">编程词典</a></li><li><a href="//m.sbmmt.com/k.html" target="_blank">php培训</a></li></ul><p class="layui-clear footer_phpcn">php中文网:公益在线php培训,帮助PHP学习者快速成长!</p><p class="footer_phpcn_record">Copyright 2014-2021 //m.sbmmt.com/ All Rights Reserved | <a href="https://beian.miit.gov.cn/" style="color: #9c9c9c;" rel="nofollow" target="_blank">苏ICP备2020058653号-1</a><a href="http://112.30.63.109:8887/showEi?id=6a58f74d17984675aa1b671d0fa101cf&url=php.cn" rel="nofollow" target="_blank"><img src="/static/images/foot_line.gif" width="15"></a><span class="footer_phpcn_say" style="padding-left:15px;"><a href="//m.sbmmt.com/about/us.html" target="_blank">关于我们</a><a href="//m.sbmmt.com/about/disclaimer.html" target="_blank" class="mr10">免责申明</a><a href="//m.sbmmt.com/about/donate.html" class="mr10" target="_blank">赞助与捐赠</a><a href="//m.sbmmt.com/blog/detail/20304.html" target="_blank">广告合作</a></span></p></div><div class="layui-col-md3" style="padding-top:15px;"><img src="/static/images/phpcn_erwei.jpg" width="100">   <img src="/static/images/qq.jpg" width="100"></div></div></div><style>.layui-fixbar{bottom:200px;}</style><input type="hidden" id="verifycode" value="/captcha.html"><script src="/static/js/jquery.min.js"></script><script src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.min.js?5.4.93"></script><script>var _hmt = _hmt || [];(function(){var hm = document.createElement("script");hm.src="//m.sbmmt.com/hm.js?aaf8dba0861f46190106021371583c62";var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(hm, s);})();(function(){var bp = document.createElement('script');var curProtocol = window.location.protocol.split(':')[0];if(curProtocol === 'https'){bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';}else{bp.src = 'http://push.zhanzhang.baidu.com/push.js';};var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(bp, s);})();</script><script type="text/javascript" src="/static/js/jquery.cookie.js"></script><script>var topadshow = $.cookie('phpcndatatopadshows');if(!topadshow&&1==2){$('.topimages').show();var topobj = $('.topimages').find('.time');var topobj_day = $('.topimages .time').find('.day');var topobj_hours = $('.topimages .time').find('.hours');var topobj_minutes = $('.topimages .time').find('.minutes');var topobj_second = $('.topimages .time').find('.second');var topday = parseInt(topobj_day.html());var tophours = parseInt(topobj_hours.html());var topminutes = parseInt(topobj_minutes.html());var topsecond = parseInt(topobj_second.html());setInterval(function(){if(topsecond > 0){topsecond = topsecond-1;}else{if(topminutes > 0){topminutes = topminutes-1;topsecond = 59;}else{if(tophours > 0){tophours = tophours-1;topminutes = 59;topsecond = 59;}else{if(topday > 0){topday = topday -1;tophours = 23;topminutes = 59;topsecond = 59;}else{topobj.html("<p><span>活动已结束</span></p>");}}}}topobj_second.html(topsecond);topobj_minutes.html(topminutes);topobj_hours.html(tophours);topobj_day.html(topday);},1000);}$('.topimages .layui-icon-close').click(function(){$.cookie('phpcndatatopadshows',1,{expires:7});$('.topimages').hide();});</script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css?2' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>$('.content_article_viewer_show').viewer();</script></body></html>