str_replace只替换一次字符串的方法


Posted in PHP onApril 09, 2013

   我们都知道,在PHP里Strtr,strreplace等函数都可以用来替换,不过他们每次替换的时候都是全部替换,举个例子:
"abcabbc",这个字符串如果使用上边的函数来把其中的b替换掉,那么他会全部替换掉,但是如果你想只替换一个或两个怎么办呢?看下边的解决方法:
     这是个比较有点意思的问题,正好之前也做过类似的处理,当时我是直接利用preg_replace实现的。

mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )
     在 subject 中搜索 pattern 模式的匹配项并替换为 replacement。如果指定了 limit,则仅替换 limit 个匹配,如果省略 limit 或者其值为 -1,则所有的匹配项都会被替换。
     因为preg_replace的第四个参数可以实现替换次数的限制,所以这个问题这样处理很方便。但是在查看php.net上关于str_replace的函数评论后,从中居然也可以挑出几个有代表性的函数来。

str_replace_once
思路首先是找到待替换的关键词的位置,然后利用substr_replace函数直接替换之。

<?php 
function str_replace_once($needle, $replace, $haystack) { 
// Looks for the first occurence of $needle in $haystack 
// and replaces it with $replace. 
$pos = strpos($haystack, $needle); 
if ($pos === false) { 
return $haystack; 
} 
return substr_replace($haystack, $replace, $pos, strlen($needle)); 
} 
?> 

str_replace_limit
还是利用preg_replace,只不过它的参数更象preg_replace了,而且对某些特殊字符做了转义处理,通用性更好。

<? 
function str_replace_limit($search, $replace, $subject, $limit=-1) { 
// constructing mask(s)... 
if (is_array($search)) { 
foreach ($search as $k=>$v) { 
$search[$k] = '`' . preg_quote($search[$k],'`') . '`'; 
}
} 
else { 
$search = '`' . preg_quote($search,'`') . '`'; 
} 
// replacement 
return preg_replace($search, $replace, $subject, $limit); 
} 
?> 
PHP 相关文章推荐
基于qmail的完整WEBMAIL解决方案安装详解
Oct 09 PHP
php环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
Nov 17 PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
Jun 23 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
Jan 14 PHP
php生成数组的使用示例 php全组合算法
Jan 16 PHP
浅析PHP微信支付通知的处理方式
May 25 PHP
Zend Framework教程之Application和Bootstrap用法详解
Mar 10 PHP
PHP使用递归算法无限遍历数组示例
Jan 13 PHP
PHP反射机制原理与用法详解
Feb 15 PHP
php实现mysql连接池效果实现代码
Jan 25 PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 PHP
Laravel框架数据库迁移操作实例详解
Apr 06 PHP
apache和php之间协同工作的配置经验分享
Apr 08 #PHP
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
Apr 08 #PHP
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
Apr 08 #PHP
简单的php数据库操作类代码(增,删,改,查)
Apr 08 #PHP
PHP If Else(elsefi) 语句
Apr 07 #PHP
PHP插入排序实现代码
Apr 04 #PHP
php 无法加载mcrypt.dll的解决办法
Apr 03 #PHP
You might like
PHP 采集程序中常用的函数
2009/12/09 PHP
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
javascript 动态添加表格行
2006/06/22 Javascript
JavaScript数值转换的三种方式总结
2014/07/31 Javascript
Windows8下搭建Node.js开发环境教程
2014/09/03 Javascript
DOM节点深度克隆函数cloneNode()用法实例
2015/01/12 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
jquery 中toggle的2种用法详解(推荐)
2016/09/02 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
jQuery实现图片滑动效果
2017/03/08 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
JQuery扩展对象方法操作示例
2018/08/21 jQuery
浅谈vue项目4rs vue-router上线后history模式遇到的坑
2018/09/27 Javascript
原生js实现密码强度验证功能
2020/03/18 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
[56:14]Fnatic vs OG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[03:35]2018年度DOTA2最佳辅助位选手5号位-完美盛典
2018/12/17 DOTA
python和shell实现的校验IP地址合法性脚本分享
2014/10/23 Python
简单介绍Python中的JSON模块
2015/04/08 Python
python实现马耳可夫链算法实例分析
2015/05/20 Python
Python爬虫实例扒取2345天气预报
2018/03/04 Python
python判断一个集合是否为另一个集合的子集方法
2018/05/04 Python
python爬取网页转换为PDF文件
2018/06/07 Python
django框架自定义用户表操作示例
2018/08/07 Python
python读取指定字节长度的文本方法
2019/08/27 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
实例教程 利用html5和css3打造一款创意404页面
2014/10/20 HTML / CSS
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
面向中国市场的在线海淘美妆零售网站:Beauty House美丽屋
2021/03/02 全球购物
学前班幼儿评语大全
2014/12/29 职场文书
安全保证书怎么写
2015/02/28 职场文书
2015毕业生简历自我评价
2015/03/02 职场文书
中学推普周活动总结
2015/05/07 职场文书
2016优秀护士先进个人事迹材料
2016/02/25 职场文书
无线电知识基础入门篇
2022/02/18 无线电