PHP中str_replace字符串替换函数详解

str_replace

(PHP 4, PHP 5, PHP 7)

str_replace — 子字符串替换

说明 ¶

mixed  str_replace (  mixed $search ,  mixed $replace ,  mixed $subject [,  int &$count ] )

该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果。

如果没有一些特殊的替换需求(比如正则表达式),你应该使用该函数替换 ereg_replace() 和 preg_replace()

参数 ¶

如果 search 和 replace 为数组,那么 str_replace() 将对 subject 做二者的映射替换。如果 replace 的值的个数少于 search 的个数,多余的替换将使用空字符串来进行。如果 search 是一个数组而 replace 是一个字符串,那么 search 中每个元素的替换将始终使用这个字符串。该转换不会改变大小写。

如果 search 和 replace 都是数组,它们的值将会被依次处理。

search

查找的目标值,也就是 needle。一个数组可以指定多个目标。

replace

search 的替换值。一个数组可以被用来指定多重替换。

subject

执行替换的数组或者字符串。也就是 haystack

如果 subject 是一个数组,替换操作将遍历整个 subject,返回值也将是一个数组。

count

如果被指定,它的值将被设置为替换发生的次数。

返回值 ¶

该函数返回替换后的数组或者字符串。


这里$serch,$replace,$subject,都可以是数组,但是官方文档似乎解释的并不太很清楚,举个栗子吧

<?php

$search1 = 'hello';
$search2 = ['hello'];
$search3 = ['hello','world'];

$replace1 = 'wuhan';
$replace2 = ['wuhan'];
$replace3 = ['wuhan','shanghai'];

$subject1 = 'hello world';
$subject2 = ['hello world'];
$subject3 = ['hello world','world hello'];
$subject4 = ['hello world','others','say world hello'];

$count = '';

$result = str_replace($search1, $replace1, $subject1, $count);
print_r($result);
echo $count.PHP_EOL;
$result = str_replace($search2, $replace2, $subject1, $count);
print_r($result);
echo $count.PHP_EOL;
$result = str_replace($search2, $replace3, $subject1, $count);
print_r($result);
echo $count.PHP_EOL;
$result = str_replace($search2, $replace2, $subject2, $count);
print_r($result);
echo $count.PHP_EOL;
$result = str_replace($search2, $replace2, $subject3, $count);
print_r($result);
echo $count.PHP_EOL;
$result = str_replace($search3, $replace3, $subject4, $count);
print_r($result);
echo $count.PHP_EOL;


这里已经尽可能详细了,结果呢就不展示了,说说结论吧,

如果$search是数组,$replace不是数组,那么数组的每个元素都会与$replace联系,然后去$subject替换;

如果$search是数组,$replace是数组,如果两者元素单位数量一致,那么就会一一与之对应,然后去$subject替换,如果$search数量大于$replace数量,那么$search多余的元素用空元素替换,如果$search数量小于$replace数量,那么$search的元素会与$reaplace中对应元素对应,多余的元素不对应,然后替换

如果$search是字符串,$replace是数组,那么就会出错,报一个notice级别的错误:Notice:  Array to string conversion(数组转换成字符串出错);

如果$subject是字符串,那么就会返回替换后的字符串,如果是数组就会返回数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值