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

我们都知道,在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);

}

?>

(0)

相关推荐

  • php str_replace的替换漏洞

    定义和用法 str_replace() 函数使用一个字符串替换字符串中的另一些字符. 语法 str_replace(find,replace,string,count) 参数 描述 find 必需.规定要查找的值. replace 必需.规定替换 find 中的值的值. string 必需.规定被搜索的字符串. count 可选.一个变量,对替换数进行计数. 提示和注释 注释:该函数对大小写敏感.请使用 str_ireplace() 执行对大小写不敏感的搜索. 注释:该函数是二进制安全的. 例子

  • PHP的substr_replace将指定两位置之间的字符替换为*号

    复制代码 代码如下: $username = "zongzi"; echo substr_replace($username,'**','1','2'); 定义和用法 substr_replace() 函数把字符串的一部分替换为另一个字符串. 语法substr_replace(string,replacement,start,length) 参数 描述 string 必需.规定要检查的字符串. replacement 必需.规定要插入的字符串. start 必需.规定在字符串的何处开始

  • php字符串替换函数substr_replace()用法实例

    本文实例讲述了php字符串替换函数substr_replace()用法.分享给大家供大家参考.具体分析如下: substr_replace用于在指定字符串中替换指定位置的子字符串 <?php $string = "Warning: System will shutdown in NN minutes!"; $pos = strpos($string, "NN"); print(substr_replace($string, "15", $p

  • php函数之子字符串替换&#65279; str_replace

    str_replace - 子字符串替换 [str_replace]mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )php函数str_replace: 返回一个字符串或者数组.该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果. 现在我们所能知道的一些这个函数的用法,如:str_replace("#", &q

  • PHP中利用substr_replace将指定两位置之间的字符替换为*号

    复制代码 代码如下: $username = "zongzi"; echo substr_replace($username,'**','1','2');

  • php str_replace替换指定次数的方法详解

    PHP str_replace方法,替换字符串 格式如下: mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )  search 查找的目标值,也就是 needle.一个数组可以指定多个目标. replace search 的替换值.一个数组可以被用来指定多重替换. subject 执行替换的数组或者字符串.也就是 haystack.如果 subject 是一个数组,替换操作将

  • JSP中的字符替换函数 str_replace() 实现!

    //// StrReplace.java//package forum;import java.util.*; /*** Title:* Description:* Copyright: Copyright (c) 2001* Company:* @author* @version 1.0*/ public class StrReplace { public StrReplace() {}public String str_replace(String from,String to,String

  • php使用str_replace实现输入框回车替换br的方法

    本文实例讲述了php使用str_replace实现输入框回车替换br的方法,分享给大家供大家参考.具体实现方法如下: 在我们用textarea时会发现回车与空格是不可看到的,所以我们利用str_replace函数将php中的\\n替换成br就可以了,有需要的朋友可以参考一下,代码如下: 复制代码 代码如下: function htmtocode($content) {     $content = str_replace("n", "<br>", str

  • php preg_match_all结合str_replace替换内容中所有img

    采集回来的图片img标签中,有好多javascript脚本和无用的信息,必需过替换自己想要的,比如alt.先看看要过滤的内容,我随便复制出来: 复制代码 代码如下: sdfsdfsdf<img alt="3568df.com靓图" src="http://www.aaa.com/upimg /080330/120D1232295023X0.gif" src="http://www.eee.com/upimg/080330 /120D123229502

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

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

  • python字符串替换第一个字符串的方法

    Python 截取字符串使用 变量[头下标:尾下标],就可以截取相应的字符串,其中下标是从0开始算起,可以是正数或负数,下标可以为空表示取到头或尾. # 例1:字符串截取 str = '12345678' print str[0:1] >> 1 # 输出str位置0开始到位置1以前的字符 print str[1:6] >> 23456 # 输出str位置1开始到位置6以前的字符 num = 18 str = '0000' + str(num) # 合并字符串 print str[-

  • C++中string替换所有指定字符串的方法

    C++的string提供了replace方法来实现字符串的替换,但是对于将字符串中某个字符串全部替换这个功能,string并没有实现,我们今天来做的就是这件事. 首先明白一个概念,即string替换所有字符串,将"12212″这个字符串的所有"12″都替换成"21″,结果是什么? 可以是22211,也可以是21221,有时候应用的场景不同,就会希望得到不同的结果,所以这两种答案都做了实现,代码如下: # include # include using namespace st

  • php字符串的替换,分割和连接方法

    本文实例讲述了php字符串的替换,分割和连接方法.分享给大家供大家参考,具体如下: 字符串的替换 1. 执行一个正则表达式的搜索和替换 复制代码 代码如下: mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) 搜索subject中匹配pattern的部分, 以replacement进行替换. 2. 子字符串替换 复制代码 代

  • JS正则表达式替换字符串replace()方法实例代码

    目录 replace()方法介绍 简单用法 重点:函数替换 补充:替换特殊字符 总结 replace()方法介绍 replace()方法执行搜索替换操作. 它接收一个正则表达式作为第一个参数, 接收一个替换字符串作为第二个参数. 它搜索调用它的字符串, 寻找与指定模式匹配的文本. 如果正则表达式带g标志, replace()方法会替换字符串中的所有匹配项; 否则, 它只替换第一个匹配项. 如果replace()方法的第一个参数是一个字符串而非正则表达式, 这个方法会按照字面值进行搜索. 简单用法

  • SQL Server中利用正则表达式替换字符串的方法

    建立正则替换函数,利用了OLE对象,以下是函数代码: --如果存在则删除原有函数 IF OBJECT_ID(N'dbo.RegexReplace') IS NOT NULL DROP FUNCTION dbo.RegexReplace GO --开始创建正则替换函数 CREATE FUNCTION dbo.RegexReplace ( @string VARCHAR(MAX), --被替换的字符串 @pattern VARCHAR(255), --替换模板 @replacestr VARCHAR

  • C++实现将一个字符串中的字符替换成另一个字符串的方法

    本文实例讲述了C++实现将一个字符串中的字符替换成另一个字符串的方法,分享给大家供大家参考.具体方法如下: 题目要求: 原地实现字符串中的每个空格替换成"%20",例如输入"We are happy", 输出"We%20are%20happy" 被替换的字符串当然不仅仅是空格,上面只是个例子 这是道很好的题目,也是百度面试中的一道题,题目不难,但是问题得考虑全面.这里给出如下实现代码: #include <iostream> #inc

  • mysql基于正则实现模糊替换字符串的方法分析

    本文实例讲述了mysql基于正则实现模糊替换字符串的方法.分享给大家供大家参考,具体如下: 例如: abcd(efg)hijk 替换之后是abcdhijk 复制代码 代码如下: update tabaleA set name = replace(name, substring(name, locate('<contact>', name),locate('</contact>', name)-locate('<contact>'+10, name)),''); 执行之后

  • JavaScript使用replace函数替换字符串的方法

    本文实例讲述了JavaScript使用replace函数替换字符串的方法.分享给大家供大家参考.具体如下: JavaScript通过replace函数替换字符串,下面的代码将Visit Microsoft中的MicroSoft替换成jb51.net <!DOCTYPE html> <html> <body> <p> Click the button to replace "Microsoft" with "jb51.net&qu

  • python同时替换多个字符串方法示例

    本文介绍了python同时替换多个字符串方法示例,分享给大家,具体如下: import re words = ''' 钟声响起归家的讯号 在他生命里 仿佛带点唏嘘 黑色肌肤给他的意义 是一生奉献 肤色斗争中 年月把拥有变做失去 疲倦的双眼带着期望 今天只有残留的躯壳 迎接光辉岁月 风雨中抱紧自由 一生经过彷徨的挣扎 自信可改变未来 问谁又能做到 可否不分肤色的界限 愿这土地里 不分你我高低 缤纷色彩闪出的美丽 是因它没有 分开每种色彩 年月把拥有变做失去 疲倦的双眼带着期望 今天只有残留的躯壳

随机推荐