str_replace() 用法bug和技巧

时间:2023-03-09 13:03:33
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