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_Flame(Version:Progress)的原代码
Oct 09 PHP
PHP $_SERVER详解
Jan 16 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
Jun 24 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
May 29 PHP
ThinkPHP3.1新特性之查询条件预处理简介
Jun 19 PHP
PHP+MYSQL会员系统的开发实例教程
Aug 23 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
Dec 17 PHP
从性能方面考虑PHP下载远程文件的3种方法
Dec 29 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
Jul 18 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
Jun 02 PHP
PHP memcache在微信公众平台的应用方法示例
Sep 13 PHP
php解压缩zip和rar压缩包文件的方法
Jul 10 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循环语句笔记(foreach,list)
2011/11/29 PHP
深入PHP FTP类的详解
2013/06/13 PHP
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
PHP类的声明与实例化及构造方法与析构方法详解
2016/01/26 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
2017/10/07 PHP
JQuery从头学起第三讲
2010/07/06 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
2015/03/31 Javascript
jQuery+AJAX实现无刷新下拉加载更多
2015/07/03 Javascript
纯javascript响应式树形菜单效果
2015/11/10 Javascript
javascript简单比较日期大小的方法
2016/01/05 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
jQuery实现的tab标签切换效果示例
2016/09/05 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
vue-resource 拦截器(interceptor)的使用详解
2017/07/04 Javascript
iscroll.js滚动加载实例详解
2017/07/18 Javascript
ionic选择多张图片上传的示例代码
2017/10/10 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 大神专访第二弹!
2014/05/20 DOTA
布同 统计英文单词的个数的python代码
2011/03/13 Python
python中zip和unzip数据的方法
2015/05/27 Python
Python机器学习之决策树算法
2017/12/22 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
详解anaconda离线安装pytorchGPU版
2020/09/08 Python
旅游管理毕业生自荐信
2013/11/05 职场文书
怎样写演讲稿
2014/01/04 职场文书
理工大学毕业生自荐信范文
2014/02/22 职场文书
拉拉队口号
2014/06/16 职场文书
党员学习中共十八大思想报告
2014/09/12 职场文书
党员违纪检讨书
2015/05/05 职场文书
MySQL中IO问题的深入分析与优化
2022/04/02 MySQL
TV动画《八十龟酱观察日记》第四季宣传PV公布
2022/04/06 日漫
vue-cil之axios的二次封装与proxy反向代理使用说明
2022/04/07 Vue.js