php关键字仅替换一次的实现函数


Posted in PHP onOctober 29, 2015

对于批量替换关键字的问题,仅替换而言没什么可说的,但这里需要的是每个关键字仅需要替换一次就可以了。查阅了php相关函数文档,发现php本身是没有函数实现这个功能的,所以不得不自己解决了。总结了几种可行方法,小记一下!
(1)使用 preg_replace 函数实现这个功能,因为 preg_replace 这个函数本身是可以实现控制替换次数的,所以一开始就想到他了,具体实现方法如下:

//可以实现替换次数的控制,不仅限于只替换一次,比如$limit为2的时候表示一个词出现很多吃的时候仅替换2次,-1表示全部替换。$search 和 $replace 都可以是字符串或者数组,但必须对应 
function str_replace_limit($search,$replace,$content,$limit=-1){ 
  if(is_array($search)){ 
    foreach ($search as $k=>$v){ 
      $search[$k]='`'.preg_quote($search[$k],'`').'`'; 
    } 
  }else{ 
    $search='`'.preg_quote($search,'`').'`'; 
  } 
  //把图片描述去掉 
  $content=preg_replace("/alt=([^ >]+)/is",'',$content); 
  return preg_replace($search,$replace,$content,$limit); 
}

(2)使用substr_replace 函数来实现,不过这里仅能实现仅一次替换

//首先找到关键字所在位置,然后使用 substr_replace(系统函数)进行替换操作 
function str_replace_once($search,$replace,$content){ 
  //把图片描述去掉 
  $content=preg_replace("/alt=([^ >]+)/is",'',$content); 
  $pos=strpos($content,$search); 
  if($pos===false){ 
    return $haystack; 
  } 
  return substr_replace($content,$replace,$pos,strlen($search)); 
}

`以上就是PHP只替换一次以及控制替换次数的实现函数,希望对大家的学习有所帮助。

PHP 相关文章推荐
php下使用以下代码连接并测试
Apr 09 PHP
破解图片防盗链的代码(asp/php)测试通过
Jul 02 PHP
php中获取关键词及所属来源搜索引擎名称的代码
Feb 15 PHP
php中批量删除Mysql中相同前缀的数据表的代码
Jul 01 PHP
PHP读取文件并可支持远程文件的代码分享
Oct 03 PHP
PHP中SimpleXML函数用法分析
Nov 26 PHP
PHP中使用file_get_contents post数据代码例子
Feb 13 PHP
PHP实现通过get方式识别用户发送邮件的方法
Jul 16 PHP
详解PHP执行定时任务的实现思路
Dec 21 PHP
几行代码轻松实现PHP文件打包下载zip
Mar 01 PHP
swoole和websocket简单聊天室开发
Nov 18 PHP
laradock环境docker-compose操作详解
Jul 29 PHP
深入浅析PHP7.0新特征(五大新特征)
Oct 29 #PHP
适用于初学者的简易PHP文件上传类
Oct 29 #PHP
php实现网站文件批量压缩下载功能
Oct 28 #PHP
php简单日历函数
Oct 28 #PHP
php将数组存储为文本文件方法汇总
Oct 28 #PHP
php如何获取文件的扩展名
Oct 28 #PHP
php检查页面是否被百度收录
Oct 28 #PHP
You might like
PHP实现获取域名的方法小结
2014/11/05 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
2016/11/12 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
关于jquery性能最佳实践的讨论,与求教
2012/03/30 Javascript
JQuery学习笔录 简单的JQuery
2012/04/09 Javascript
深入了解JavaScript中的Symbol的使用方法
2015/07/28 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
AngularJS入门教程之Select(选择框)详解
2016/07/27 Javascript
AngularJS下对数组的对比分析
2016/08/24 Javascript
动态加载css方法实现和深入解析
2017/01/18 Javascript
Angular.js之作用域scope'@','=','&'实例详解
2017/02/28 Javascript
jQuery插件FusionCharts绘制的2D条状图效果【附demo源码】
2017/05/13 jQuery
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
nodejs简单读写excel内容的方法示例
2018/03/16 NodeJs
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
微信小程序自定义select下拉选项框组件的实现代码
2018/08/28 Javascript
Vue中 key keep-alive的实现原理
2018/09/18 Javascript
Vue中的基础过渡动画及实现原理解析
2018/12/04 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
VUE+elementui面包屑实现动态路由详解
2019/11/04 Javascript
[01:07:17]EG vs Optic Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
浅析python 内置字符串处理函数的使用方法
2014/06/11 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
2019/09/11 Python
python 调整图片亮度的示例
2020/12/03 Python
用html5的canvas画布绘制贝塞尔曲线完整代码
2013/08/14 HTML / CSS
办公室文秘岗位职责
2013/11/15 职场文书
拾金不昧的表扬信
2014/01/16 职场文书
五年级音乐教学反思
2014/02/06 职场文书
求职意向书
2014/07/29 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
奖学金个人总结
2015/03/04 职场文书
MySQL分区以及建索引的方法总结
2022/04/13 MySQL
Mysql 8.x 创建用户以及授予权限的操作记录
2022/04/18 MySQL