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 相关文章推荐
php模拟asp中的XmlHttpRequest实现http请求的代码
Mar 24 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
May 06 PHP
PHP+jQuery实现自动补全功能源码
May 15 PHP
PHP设计模式之代理模式的深入解析
Jun 13 PHP
PHP的openssl加密扩展使用小结(推荐)
Jul 18 PHP
php中通过eval实现字符串格式的计算公式
Mar 18 PHP
thinkPHP实现的省市区三级联动功能示例
May 05 PHP
PHP简单装饰器模式实现与用法示例
Jun 22 PHP
php实现mysql连接池效果实现代码
Jan 25 PHP
php读取本地json文件的实例
Mar 07 PHP
vmware linux系统安装最新的php7图解
Apr 14 PHP
php的命名空间与自动加载实现方法
Aug 25 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
Wordpress php 分页代码
2009/10/21 PHP
360通用php防护代码(使用操作详解)
2013/06/18 PHP
php时区转换转换函数
2014/01/07 PHP
Laravel使用支付宝进行支付的示例代码
2017/08/16 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
javascript下function声明一些小结
2007/12/28 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
Jquery中扩展方法extend使用技巧
2014/08/24 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
NodeJs——入门必看攻略
2016/06/27 NodeJs
JavaScript第一篇之实现按钮全选、功能
2016/08/21 Javascript
HTML5 实现的一个俄罗斯方块实例代码
2016/09/19 Javascript
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
2018/03/06 Javascript
Node4-5静态资源服务器实战以及优化压缩文件实例内容
2019/08/29 Javascript
jquery将信息遍历到界面上实例代码
2020/01/21 jQuery
python分析apache访问日志脚本分享
2015/02/26 Python
python使用Tkinter显示网络图片的方法
2015/04/24 Python
Python如何实现守护进程的方法示例
2017/02/08 Python
Python3.7实现中控考勤机自动连接
2018/08/28 Python
Mac下Anaconda的安装和使用教程
2018/11/29 Python
通过cmd进入python的实例操作
2019/06/26 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
2020/02/27 Python
详解python内置模块urllib
2020/09/09 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
python生成xml时规定dtd实例方法
2020/09/21 Python
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
美国精油公司:Plant Therapy
2019/05/17 全球购物
蔻驰英国官网:COACH英国
2020/07/19 全球购物
在线实验室测试:HealthLabs.com
2020/05/03 全球购物
新媒传信软件测试面试题
2013/02/24 面试题
教学实习自我评价
2014/01/28 职场文书
个人自荐书怎么写
2015/03/26 职场文书
幼儿园园务工作总结2015
2015/05/18 职场文书
带你彻底理解JavaScript中的原型对象
2021/04/14 Javascript
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL