PHP正则表达式替换站点关键字链接后空白的解决方法
2023-06-13 09:15:46 时间
标题这样不知道合适不合适。具体的情况是这样的:网站要增加关键字链接功能,然后需要对文章的内容进行正则表达式匹配并替换,然后使用了preg_replace函数。替换的程序代码如下:
functionReplaceKeyword($linkDefs,$content){ $linkMap=array(); /*foreach($linkDefsas$row){ $linkMap[]=explode(",",$row); }*/ $linkMap=$linkDefs; //把原有的链接替换成文字 foreach($linkMapas$row){ $content=preg_replace("/(<a.*?>\s*)(".$row[0].")(\s*<\/a>)/sui",$row[0],$content); } //关键字从长至短排序 usort($linkMap,"_sortDesc"); //var_dump($linkMap); $tmpKwds=array();//存放暂时被替换的子关键字 $k_count=0; foreach($linkMapas$i=>$row){ list($kwd,$url)=$row; for($j=$i+1;$j<count($linkMap);$j++){ $subKwd=$linkMap[$j][0]; //如果包含其他关键字,暂时替换成其他字符串,如茶叶变成 if(strpos($kwd,$subKwd)!==false){ $tmpKwd=""; $kwd=str_replace($subKwd,$tmpKwd,$kwd); $tmpKwds[$tmpKwd]=$subKwd; } } //把文字替换成链接 require(MLEINC."/config/globals.config.php"); $th_num=$config["keyword_num"];//关键字替换次数 $content=preg_replace("/(".$row[0].")/sui","<ahref="".$row[1]."">".$kwd."</a>",$content,$th_num,$count);//所有的匹配项都会被替换 $k_count+=$count; } //把代替子关键字的字符串替换回来 foreach($tmpKwdsas$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); }
程序是从网上找的,然后在本地测试是正常的,本地环境为php5.3服务是5.2的,上传到网上去后,提交则显示空白,一开始考虑是PHP版本问题,以为是eregpreg的区别,替换后还是不行。后来网上看,发现有网友说调整大pcre.backtrack_limit和pcre.recursion_limit就行,我试了下,果然可以了。看来是配置问题,不过一般情况下,PHP的默认配置应该没啥问题,我自己写的这程序还是不够好!
相关文章
- PHP时区设置相差8小时间程序与php.ini配置方法
- php和asp网络验证码,Verifycode 1个简单的网页图片验证码的示例程序,基本上现有 字和字母都可以识别。 WEB(ASP,PHP,…) 238万源代码下载- www.pudn.com…
- 【说站】php中的SAPI是什么
- php静态延迟方法,phpstatic延迟静态绑定_PHP教程
- PHP连接MySQL数据库的步骤与方法(php如何连接mysql)
- 的应用利用PHP中MySQL函数实现功能强大的数据库操作(php中mysql函数)
- PHP在Linux上安装:轻松快捷(php安装包linux)
- PHP生成短链接方法详解编程语言
- PHP与MySQL的紧密链接(php与mysql的关系)
- 数据PHP操作MySQL:删除数据(php删除mysql)
- 实现PHP程序Redis连接池的简单方法(redis连接池php)
- PHP连接MSSQL库的方法(php链接mssql)
- Linux下部署PHP网站的指南(linux部署php网站)
- 数据PHP实现MySQL数据导出的实现方法(php导出mysql)
- PHP轻松访问MySQL数据:使用简明易懂的方法获取数据(php获取mysql数据)
- PHP编译Redis:提升网站性能的利器(php编译redis)
- 慢解决PHP连接MySQL慢的方法(php连接mysql时间)
- PHP读取Linux文件的方法(php读取linux文件)
- 用Redis作为PHP缓存:提高性能和效率(php中redis做缓存)
- 测试PHP连接MS SQL 数据库的结果(php链接mssql测试)
- PHP链接MSSQL:解开空白之谜(php链接mssql空白)
- PHP连接Microsoft SQL Server数据库技巧(php 连 mssql)
- PHP如何连接MS SQL服务器(php怎么链接mssql)
- PHP与MSSQL的良好结合,发挥强大的功能(php和mssql)
- 一步一步教你PHP操作MSSQL的下载方法(php_mssql下载)
- Linux下轻松执行PHP文件的方法(linux执行php文件)
- 记录PHP之MySQL踩坑:如何防止重复记录(php mysql 重复)
- PHP如何实现与MSSQL的连接(要php链接mssql)
- 如何使用Redis技术来优化PHP性能(清楚redis php)
- 测试 PHP 与 Redis 连接的可行性(测试php连接redis)
- 使用Redis需要PHP版本满足特定要求(redis需要php版本)
- php正则表达式取得内容所有链接的方法
- PHP获取短链接跳转后的真实地址和响应头信息的方法