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 相关文章推荐
不用iconv库的gb2312与utf-8的互换函数
Oct 09 PHP
用PHP中的 == 运算符进行字符串比较
Nov 26 PHP
PHP+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
Feb 15 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
Sep 23 PHP
PHP中使用crypt()实现用户身份验证的代码
Sep 05 PHP
以文件形式缓存php变量的方法
Jun 26 PHP
ajax+php控制所有后台函数调用
Jul 15 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
Dec 17 PHP
CodeIgniter视图使用注意事项
Jan 20 PHP
php简单实现短网址(短链)还原的方法(测试可用)
May 09 PHP
php无法连接mysql数据库的正确解决方法
Jul 01 PHP
Yii中的relations数据关联查询及统计功能用法详解
Jul 14 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模块 Memcached功能多于Memcache
2011/06/14 PHP
基于php无限分类的深入理解
2013/06/02 PHP
ubuntu下配置nginx+php+mysql详解
2015/09/10 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
2015/12/22 PHP
使用javascript创建快捷方式的简单实例
2013/08/09 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
使用jquery中height()方法获取各种高度大全
2014/04/02 Javascript
iframe中使用jquery进行查找的方法【案例分析】
2016/06/17 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
微信小程序 实例应用(记账)详解
2016/09/28 Javascript
ionic开发中点击input时键盘自动弹出
2016/12/23 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
vue2.0使用swiper组件实现轮播的示例代码
2018/03/03 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
layer.prompt输入层的例子
2019/09/24 Javascript
JavaScript中的几种继承方法示例
2020/12/06 Javascript
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
Python Selenium截图功能实现代码
2020/04/26 Python
python中np是做什么的
2020/07/21 Python
Opencv 图片的OCR识别的实战示例
2021/03/02 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
意大利咖啡、浓缩咖啡和浓缩咖啡机:illy caffe
2019/03/20 全球购物
法律专业个人实习自我鉴定
2013/09/23 职场文书
公司道歉信范文
2014/01/09 职场文书
高中军训感言500字
2014/02/24 职场文书
村党支部公开承诺书
2014/05/29 职场文书
民主生活会汇报材料
2014/12/15 职场文书
2015年小学语文教学工作总结
2015/05/25 职场文书
董事会决议范本
2015/07/01 职场文书
《7的乘法口诀》教学反思
2016/02/18 职场文书
导游词之天津古文化街
2019/11/09 职场文书
Redis 配置文件重要属性的具体使用
2021/05/20 Redis
Win10加载疑难解答时出错发生意外错误的解决方法
2022/07/07 数码科技