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

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

?> 

时间: 2024-08-03 20:58:30

str_replace只替换一次字符串的方法_php技巧的相关文章

php字符串的替换,分割和连接方法_php技巧

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

php如何实现只替换一次或N次_php技巧

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

php+mysqli实现批量替换数据库表前缀的方法_php技巧

本文实例讲述了php+mysqli实现批量替换数据库表前缀的方法.分享给大家供大家参考.具体分析如下: 在php中有时我们要替换数据库中表前缀但是又不苦于一个个表去修改前缀,这里我自己写了一个mysqli批量替换数据库表前缀的php程序,感兴趣的朋友可以参考一下,代码如下: <?php header ( 'http-equiv="Content-Type" content="text/html; charset=utf-8"' ); $DB_host = &q

php查询相似度最高的字符串的方法_php技巧

本文实例讲述了php查询相似度最高的字符串的方法.分享给大家供大家参考.具体如下: 根据传入的字符串和数组,返回数组中相似度最高的字符串 1. PHP代码如下:     function closest_word($input, $words) { $shortest = -1; foreach ($words as $word) { $lev = levenshtein($input, $word); if ($lev == 0) { $closest = $word; $shortest =

php实现指定字符串中查找子字符串的方法_php技巧

本文实例讲述了php实现指定字符串中查找子字符串的方法.分享给大家供大家参考.具体分析如下: 对strpos()函数可以用来在php中查找子字符串.strpos()函数将试图找到子字符串在源字符串中首次出现的位置.如果找到了,它会返回一个非负整数表示子字符串出现的位置. 否则它会返回一个布尔值false. <?php $haystack1 = "2349534134345w3mentor16504381640386488129"; $haystack2 = "w3men

php根据指定位置和长度获得子字符串的方法_php技巧

本文实例讲述了php根据指定位置和长度获得子字符串的方法.分享给大家供大家参考.具体分析如下: php的substr函数功能非常强大,不断可以从前往后去子字符串还可以从后往前取字符串 <?php $string = "beginning"; print("Position counted from left: ".substr($string,0,5)."\n"); print("Position counted form rig

PHP简单判断字符串是否包含另一个字符串的方法_php技巧

本文实例讲述了PHP简单判断字符串是否包含另一个字符串的方法.分享给大家供大家参考,具体如下: 在使用PHP判断某字符串中是否包含一个简单的子字符串的时候,我们通常会用到strpos()或者stristr()这两个函数,可是偏偏如果这个字符串的位置如果是在索引0位置,也就是说在要匹配的字符串的最开始,则会出问题. 当然我们还是有解决的方法的,这里就有一个笨办法,但是比较好用,无论中英文,标点符号都适用. 代码如下: function checkStr($str,$target) { $tmpAr

php比较相似字符串的方法_php技巧

本文实例讲述了php比较相似字符串的方法.分享给大家供大家参考.具体分析如下: 这里通过php的similar_text函数比较两个字符串的相似性. $word2compare = "stupid"; $words = array( 'stupid', 'stu and pid', 'hello', 'foobar', 'stpid', 'upid', 'stuuupid', 'sstuuupiiid', ); while(list($id, $str) = each($words))

php压缩和解压缩字符串的方法_php技巧

本文实例讲述了php压缩和解压缩字符串的方法.分享给大家供大家参考.具体如下: 下面php代码通过gzcompress和gzuncompress压缩和解压缩字符串,可以设定压缩级别 $str = 'Hello I am a very very very very long string'; $compressed = gzcompress($str, 9);//压缩级别为9 $uncompressed = gzuncompress($compressed); echo $str, "\n&quo