PHP 只替换一次或或只替换N次

    我们都知道,在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) {
// Nothing found//迎转载但请注明出处Email:See7di@Gmail.com,Seven的部落格http://hi.baidu.com/see7di/home
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],'`') . '`';
}//迎转载但请注明出处Email:See7di@Gmail.com,Seven的部落格http://hi.baidu.com/see7di/home
}
else {
$search = '`' . preg_quote($search,'`') . '`';
}
// replacement
return preg_replace($search, $replace, $subject, $limit);
}
?>

转载于:https://www.cnblogs.com/see7di/archive/2011/09/01/2239660.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 PHP 的 array_map() 函数来替换数组中的某个值。具体使用方法如下: ``` $originalArray = array(1, 2, 3, 4, 5); $newValue = 10; $oldValue = 3; $newArray = array_map(function($item) use ($newValue, $oldValue) { return $item == $oldValue ? $newValue : $item; }, $originalArray); ``` 在上面的代码中,$originalArray 是要被替换的数组,$newValue 是要替换成的新值,$oldValue 是要被替换的旧值。$newArray 就是替换后的新数组。 也可以使用 array_walk,array_replace,使用foreach遍历数组来替换数组中的某个值。 ### 回答2: 在PHP中,可以使用内置函数`str_replace()`来替换字符串中的某个特定值。`str_replace()`函数接受三个参数,分别是要替换的值、替换后的值以及被替换的字符串。 例如,假设有一个字符串`$str = "Hello World!"`,我们想将其中的"World"替换为"PHP"。可以使用如下代码实现替换: ```php $str = "Hello World!"; $newStr = str_replace("World", "PHP", $str); echo $newStr; // 输出:Hello PHP! ``` 上述代码中,`str_replace("World", "PHP", $str)`表示将字符串`$str`中的"World"替换为"PHP",并将结果保存在变量`$newStr`中。最后使用`echo`语句输出新的字符串结果。 除了字符串之外,`str_replace()`函数还可以用于数组的替换。如果要替换数组中的某个值,可以使用`array_replace()`函数。这个函数接受n个数组作为参数,其中后面的数组会将前面数组中相同索引位置的值进行替换。 例如,有两个数组`$arr1 = array("a", "b", "c");`和`$arr2 = array(0 => "d", 2 => "e");`,我们想将`$arr2`中的值替换到`$arr1`相应位置,可以使用如下代码实现: ```php $arr1 = array("a", "b", "c"); $arr2 = array(0 => "d", 2 => "e"); $newArr = array_replace($arr1, $arr2); print_r($newArr); // 输出:Array ( [0] => d [1] => b [2] => e ) ``` 上述代码中,`array_replace($arr1, $arr2)`将`$arr2`中的值替换到`$arr1`的相应位置,并将结果保存在变量`$newArr`中。最后使用`print_r()`函数输出新的数组结果。 ### 回答3: 在PHP中,要替换数据的某个值,可以使用字符串的替换函数或者数组的索引来实现。 如果要替换字符串中的某个值,可以使用str_replace函数。该函数接受三个参数,分别是要替换的字符串、替换后的字符串和要进行替换操作的字符串。例如,要将字符串中的"apple"替换为"banana",可以使用以下代码: ```php $str = "I like apple"; $newStr = str_replace("apple", "banana", $str); echo $newStr; // 输出:I like banana ``` 如果要替换数组中的某个值,可以使用数组的索引来进行替换。例如,将数组中的某个元素从"apple"替换为"banana",可以使用以下代码: ```php $arr = array("apple", "orange", "grape"); $arr[0] = "banana"; print_r($arr); // 输出:Array ( [0] => banana [1] => orange [2] => grape ) ``` 以上是使用PHP进行替换数据某个值的两种常见方法。根据实际需求和数据类型,选择合适的方法来进行替换操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值