找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1324|回复: 0
打印 上一主题 下一主题

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

[复制链接]

2500

主题

2513

帖子

7520

积分

论坛元老

Rank: 8Rank: 8

积分
7520
跳转到指定楼层
楼主
发表于 2018-2-14 05:41:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            对于批量替换关键字的问题,仅替换而言没什么可说的,但这里需要的是每个关键字仅需要替换一次就可以了。查阅了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 preg_match_all结合str_replace替换内容中所有img
  • PHP 替换模板变量实现步骤
  • PHP html标签正则替换并可自定义正则规则
  • php获取当前网址url并替换参数或网址的方法
  • PHP的substr_replace将指定两位置之间的字符替换为*号
  • PHP 字符串正则替换函数preg_replace使用说明
  • php 字符串替换的方法
  • PHP中替换换行符的几种方法小结
  • 如何在PHP中使用正则表达式进行查找替换
  • php 批量替换程序的具体实现代码
  • php 批量替换html标签的实例代码
  • PHP preg_replace() 正则替换所有符合条件的字符串
  • PHP正则表达式替换站点关键字链接后空白的解决方法
  • PHP正则替换函数preg_replace和preg_replace_callback使用总结
  • php正则替换变量指定字符的方法
  • 浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端