PHP

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是两个参数中的有效偏移量。

如果fromto具有不同的长度,则两个中较长的字符将被忽略。 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 →