strtr
strtr
(PHP 4, PHP 5, PHP 7)
strtr - 翻译字符或替换子字符串
描述
string strtr ( string $str , string $from , string $to )
string strtr ( string $str , array $replace_pairs )
如果给出三个参数,则此函数返回一个str的副本,其中每个(单字节)字符中的所有出现已被转换为相应的字符进入,即$ $ n中的每个出现已被替换为$ $ n,其中$ n是两个参数中的有效偏移量。
如果from
和 to
具有不同的长度,则两个中较长的字符将被忽略。 str的长度将与返回值相同。
如果给出两个参数,第二个参数应该是数组形式的数组('from'=>'to',...)。返回值是一个字符串,其中所有出现的数组键都被相应的值替换。最长的键将首先尝试。一旦子字符串被替换,它的新值将不会被再次搜索。
在这种情况下,如果没有空键,键和值可以有任意长度; 另外,返回值的长度可能不同于str
。但是,当所有密钥具有相同大小时,此功能将是最有效的。
参数
str
正在翻译的字符串。
from
将字符串转换为to
。
to
字符串替换from
。
replace_pairs
可以使用replace_pairs参数来代替to和from,在这种情况下,它是一个数组形式('from'=>'到',...)的数组。
返回值
返回翻译的字符串。
如果replace_pairs包含一个空字符串(“”)的键,则返回FALSE。 如果str不是标量,则不会将其转换为字符串,而会引发警告并返回NULL。
例子
示例#1 strtr()示例
<?php
//In this form, strtr() does byte-by-byte translation
//Therefore, we are assuming a single-byte encoding here:
$addr = strtr($addr, "äåö", "aao"
?>
下一个示例显示只有两个参数调用时strtr()
的行为。请注意替换项的首选项(“h”
未被选中,因为有更长的匹配项)以及如何替换文本不再被搜索。
示例#2 带两个参数的strtr()示例
<?php
$trans = array("h" => "-", "hello" => "hi", "hi" => "hello"
echo strtr("hi all, I said hello", $trans
?>
上面的例子将输出:
hello all, I said hi
这两种行为模式大不相同。有三个参数,strtr()
会替换字节; 与两个,它可能会取代更长的子串。
示例#3 strtr()行为比较
<?php
echo strtr("baab", "ab", "01"),"\n";
$trans = array("ab" => "01"
echo strtr("baab", $trans
?>
上面的例子将输出:
1001
ba01
扩展内容
- str_replace() - 用替换字符串替换所有出现的搜索字符串
- preg_replace() - 执行正则表达式搜索并替换
← strtoupper
substr_compare →