str_replace 的前两个参数都可以是数组,当他们是数组时,会依次替换。比如 str_replace(array(‘a’, ‘1’), array(‘b’, ‘2’), ‘aaa111’); 的结果就是 bbb222。
但是这里 str_replace 的行为实际上并不是把 ‘a’ 映射为 ‘b’,把 ‘1’ 映射为 ‘2’,而是先做一轮替换,把 ‘a’ 替换为 ‘b’ ,再做一轮替换把 ‘1’ 替换为 ‘2’。在某些情况下,不了解这个情况,用str_replace 来做映射的时候就可能出错。
比如,想把 ‘a’ 映射为 ‘b’,把 ‘b’ 映射为 ‘c’,用str_replace(array(‘a’, ‘b’), array(‘b’, ‘c’), ‘abc’); 的结果不是 ‘bcc’ 而是 ‘ccc’。
要实现映射,得用另一个函数—— strtr。
真是那样。。。它是一直替换。。直到字符串中找不到‘a’与’b’为止。。。
这样呀,还真没测试过。
中秋快乐
居然看懂了 哇哈哈哈哈