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 相关文章推荐
关于Intype一些小问题的解决办法
Mar 28 PHP
php UTF8 文件的签名问题
Oct 30 PHP
用PHP+MySQL搭建聊天室功能实例代码
Aug 20 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
Sep 27 PHP
php实现将字符串按照指定距离进行分割的方法
Mar 14 PHP
php去除字符串中空字符的常用方法小结
Mar 17 PHP
PHP QRCODE生成彩色二维码的方法
May 19 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
Aug 19 PHP
PHP设计模式之模板模式定义与用法详解
Dec 20 PHP
laravel通过a标签从视图向控制器实现传值
Oct 15 PHP
laravel框架语言包拓展实现方法分析
Nov 22 PHP
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
Apr 16 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中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
PHP动态编译出现Cannot find autoconf的解决方法
2014/11/05 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
php基于环形链表解决约瑟夫环问题示例
2017/11/07 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
2019/04/10 PHP
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
解决js中window.open弹出的是上次的缓存页面问题
2013/12/29 Javascript
JavaScript中九种常用排序算法
2014/09/02 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
bootstrap改变按钮加载状态
2014/12/01 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
聊一聊JS中this的指向问题
2016/06/17 Javascript
Google 地图获取API Key详细教程
2016/08/06 Javascript
jQuery代码实现实时获取时间
2017/01/29 Javascript
ES6学习教程之对象的扩展详解
2017/05/02 Javascript
addeventlistener监听scroll跟touch(实例讲解)
2017/08/04 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
2018/08/25 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
python制作小说爬虫实录
2017/08/14 Python
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
python requests爬取高德地图数据的实例
2018/11/10 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
2020/03/10 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
2020/08/27 Python
CSS3 calc()会计算属性详解
2018/02/27 HTML / CSS
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
英国护肤品购物网站:Beauty Expert
2016/08/19 全球购物
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
英语专业推荐信
2013/11/16 职场文书
财务专业大学生职业生涯规划范文
2013/12/30 职场文书
春季防火方案
2014/05/10 职场文书
产品发布会策划方案
2014/05/12 职场文书
小学生学习雷锋倡议书
2014/05/15 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python