strtr函数用于转换指定字符,有两种传参方式:
string strtr(string $str,string $from,string $to)
string strtr(string $str,array $replace_pairs)
第一种方式将$from中的字符转换为$to中的字符,转换按位进行,即$from[$n]转换为$to[$n],多余的部分将会被忽略,转换后的字符不会被再次转换。这种转换方式意味着不需要完全匹配就会进行转换,只要遇到$from中存在且有$to中也有对应的值的话就会进行转换,如果$from中出现了相同的字符,则会按最后面的映射关系去转换,返回的字符串长度与传入的字符串长度一致。
第二种方式是将$from和$to以array($from=>$to...)的形式传入函数,以此种方式调用时函数时,长度较长的key先做替换,替换后的字符不会被再次转换,与第一种方式不同的是只有在键完全匹配的情况下才会进行转换。
此外两种方式对空字符串的处理也不同,第一种方式中如果$from为空字符串,则不会进行任何转换并将原字符串返回,而第二种方式如果$from为空字符串,则返回false。
$str="adccbcde";
echo strtr($str,"cdma","asd")."\n";
echo strtr($str,"cdca","asd")."\n";
echo strtr($str,array("cde"=>"cdefg","de"=>"cdma"))."\n";
echo strtr($str,"","asd")."\n";
var_dump(strtr($str,array(""=>"cdefg","de"=>"cdma")));