金沙澳门官网7817网址PHP替换字符串函数strtr()和str_replace()相比较

「我今天开着张三丰田去上班 」 strtr,」(四个词均替换为了,strtr(string,strtr() 函数转换字符串中特定的字符,”bc”) 只替换原始字符串中出现的a 输出,每一次替换的蓝本都是最原始的那个字符串,string $from,string strtr ( string $str

频率相比较(12687个字符,替换壹次): str_replace:
0.十9937906265秒strtr: 0.030683994293二秒替换结果相比比方:「张三」、「张叁丰」、「张3丰田(Toyota)」 均为违犯禁令词
(为啥会有那样的界别?请参见 「法X」、「法Xgong」)
原来的文章:「小编明日开着张三丰田(Toyota)去上班 」 strtr:「我前日开着\去上班
」(八个词均替换为了*) str_replace:「笔者前些天开着**丰田去上班
」(仅仅替换了第一个相称项)
所以使用str_replace替换,是不能够本质上化解难题。时间比较:关键词数量:671二(无重复)self init:0.0078909397125二(加
载xcache)self:0.035437822341玖strtr:0.031116962432玖strtr_array:0.432713985443str
_replace:0.109627008438

输出:
Hello World例子 2

<?php
$Arr=array(‘ao’=>’oa’,’ai’=>’ia’);
echo strtr(“paocai!”,$Arr); //今年输出的为poacia
?>

你恐怕感兴趣的篇章:

  • php字符串替换函数substr_replace()用法实例
  • php函数之子字符串替换
    str_replace
  • PHP中str_replace函数使用小结
  • php 中的str_replace
    函数计算
  • 详解PHP字符串替换str_replace()函数多样用法

PHP源代码中对此strtr的编制程序

输出:
Hi earth

总括:strtr他是跟字符长度有联系 的,可是str_replace就从未关联
,推测在运营步骤的时候会读取字符串长度所以才会比strtr慢繁多。

当$from=’-=’ ,$to=’C’,输出’aC=b’, $from里的’=’被忽略.

//有兴趣的朋友可以研究一下
function strtr_array(&$str,&$replace_arr) {
    $maxlen = 0;$minlen = 1024*128;
    if (empty($replace_arr)) return $str;
    foreach($replace_arr as $k => $v) {
        $len = strlen($k);
        if ($len < 1) continue;
        if ($len > $maxlen) $maxlen = $len;
        if ($len < $minlen) $minlen = $len;
    }
    $len = strlen($str);
    $pos = 0;$result = '';
    while ($pos < $len) {
        if ($pos + $maxlen > $len) $maxlen = $len - $pos; 
        $found = false;$key = '';
        for($i = 0;$i<$maxlen;++$i) $key .= $str[$i+$pos]; //原文:memcpy(key,str+$pos,$maxlen)
        for($i = $maxlen;$i >= $minlen;--$i) {
            $key1 = substr($key, 0, $i); //原文:key[$i] = '\0'
            if (isset($replace_arr[$key1])) {
                $result .= $replace_arr[$key1];
                $pos += $i;
                $found = true;
                break;
            }
        }
        if(!$found) $result .= $str[$pos++];
    }
    return $result;
}

<?php
$arr = array(“Hello” => “Hi”, “world” => “earth”);
echo strtr(“Hello world”,$arr);
?>

其次是str_replace:

而利用第二种样式, 则未有这些难点, 多余的字条不会忽略.

[PHP]代码

复制代码 代码如下:

先是那二个函数都以有所替换字符功效的。可是strtr比str_replace质量上要块四倍。具体意况请看如下解释:
首先是strtr函数:
实例1:当

string strtr ( string $str , string $from , string $to )
string strtr ( string $str , array $replace_pairs )
当使用第一种的时候, 参数 $from, $to 的字符串长度一定要一如以前,
不然多余的(不管是$from多恐怕$to多) 字符被忽略.

require('badword.src.php');
$badword1 = array_combine($badword,array_fill(0,count($badword),'*'));
$bb = '我今天开着张三丰田上班';
$str = strtr($bb, $badword1);

您恐怕感兴趣的稿子:

  • PHP中strtr字符串替换用法详解
  • PHP中的strtr函数使用介绍(str_replace)
  • PHP preg_replace()
    正则替换全部符合条件的字符串
  • PHP
    字符串正则替换函数preg_replace使用表明
  • php获取当前网站url并替换参数或网站的章程
  • PHP正则替换函数preg_replace和preg_replace_callback使用总括
  • PHP中替换换行符的三种方式小结
  • PHP的substr_replace将点名两岗位之间的字符替换为*号
  • 怎么着在PHP中使用正则表明式进行搜寻替换
  • php中替换字符串函数strtr()和str_repalce()的用法与差异

strtr(string,from,to):

当$from=’-=’ ,$to=’CD’,输出’aCDb’, 因为’-=’与’CD’的长短同样,没万分.

<?php
echo strtr(“Hilla Warld”,”ia”,”eo”);
?>

 
<?php
//那一年输出的为baicai而不是bai1二3cai,因为str(“pao”)<strlen(“bai1二三”)
echo strtr(“paocai!”,”pao”,”bai123″);
?>

就此,要是有意用 strtr 函数替代 str_replace, 并且使用了第3种情势,
则一定要留心这一个特点, 那说不定是3个陷阱.