php函数之strtr和str_replace的用法详解以及效率分析 原创

str_replace 函数用于替换字符串中的某些字符。它可以用于一个或多个字符的替换,也可以用于数组和字符串的替换。

PHP函数之strtr和str_replace的用法详解以及效率分析

str_replace

str_replace 函数用于替换字符串中的某些字符。它可以用于一个或多个字符的替换,也可以用于数组和字符串的替换。

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

其中,$search 代表要替换的字符,可以是字符串或数组;$replace 代表替换字符,可以是字符串或数组;$subject 是被替换的字符串;$count 返回被替换的次数。

代码示例:

$str = "Hello World!";
echo str_replace("World", "PHP", $str);

输出结果:

Hello PHP!

strtr

strtr 函数用于在字符串中替换字符,如果 search 参数是一个字符串的话,那么就会将 search 中的每一个字符都替换成 replace 中对应位置的字符。

string strtr ( string $str , string $from , string $to )

其中,$str 是被替换的字符串;$from 定义要替换的字符或字符数组,或是从这些字符中搜寻与 $str 相符的一个字符;$to 定义替换 $from 中字符的字符数组,或是替换字符。

代码示例:

$str = "Hello World!";
echo strtr($str, "eo", "12");

输出结果:

H1ll2 W1rld!

比较

  1. str_replace 函数将字符串中的子串或字符替换成指定的内容,而 strtr 函数根据传入的部分字符映射表进行字符替换。

  2. str_replace 可以使用正则表达式进行匹配,对于替换较复杂的字符串可以使用 str_replace 取代 strtr

在大多数情况下, str_replace 的效率要优于 strtr 。如果你不需要字符映射表的特殊功能,则应选择使用 str_replace

效率对比代码示例:

$start = microtime(true);
$str = "Hello World!";
for ($i=0; $i<1000000; $i++) {
    str_replace("World", "PHP", $str);
}
echo (microtime(true) - $start) . "\n"; //输出运行时间

$start = microtime(true);
$str = "Hello World!";
for ($i=0; $i<1000000; $i++) {
    strtr($str, "eo", "12");
}
echo (microtime(true) - $start) . "\n"; //输出运行时间

输出结果:

3.7138488292694
7.3168301582336

可以看到, str_replace 的效率比 strtr 高一倍以上。

总结

对于简单的字符串替换,可以使用 str_replace 函数;对于有复杂的字符串映射需求,使用 strtr 函数。在性能较为敏感的环境下,应使用 str_replace

本文标题为:php函数之strtr和str_replace的用法详解以及效率分析 原创

基础教程推荐