str_replace() 用法bug和技巧

语法

str_replace(find,replace,string,count)

参数    描述
find    必需。规定要查找的值。
replace    必需。规定替换 find 中的值的值。
string    必需。规定被搜索的字符串。
count    可选。一个变量,对替换数进行计数。
 

 

 

 

 

 

这个我不确定是语法bug还是我写法的问题,当出现匹配字符出现一个在第一匹配选项的时候,会出现不完全匹配的情况,导致匹配出的字符有问题

$list = str_replace(array(0,10,20,30,40), array('已取消','未付款','已付款','已发货','已收货'),20);

$list = str_replace(array('10','20','30','40','0'), array('未付款','已付款','已发货','已收货','已取消'),20);
echo $list;

第一张情况下,打印出的结果是

2已取消

已取消

第二种情况下是正常的,为什么呢?,按照第一种情况下第一次配置是拿0去匹配20,是可以匹配得到的吧0替换成了‘已取消’,打印出来的就是2已取消

有些不能使用这种方法的就使用了自己在写一个方法去switch一下,然后返回值,当然像我这种懒人是不喜欢的

这种不完全匹配是字符串的话,出现的问题就更大了

$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$onlyconsonants = str_replace($vowels, "Z", "Hello World of PHP");


echo $onlyconsonants;

 

打印出这个,如果是匹配某个字符包含在你需要查找的字符里面还可以,如果只是替换你查找的到的直接替换,就不行了

HZllZ WZrld Zf PHP

 
原文地址:https://www.cnblogs.com/zx-admin/p/4616516.html