Python's Archiver

為方便港臺同胞閱覽,Python中國特別推出簡繁體內容轉換功能

xieaotian 发表于 2008-10-16 11:32

str_replace 容易被忽视的一点

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。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.