php函數(shù)之strtr和str_replace的用法詳解以及效率分析 原創(chuàng)
目錄
- 一. str_repalce()用法
- 二. strtr()用法
- 三. 效率對比
- 四. 總結
PHP中主要用strtr()和str_repalce()這兩個函數(shù)替換字符串和數(shù)組,但你們都知道他們這兩個函數(shù)的區(qū)別和用法嗎?有不少文章在說使用strtr函數(shù)比str_replace快4倍,那為什么很多時候都在用str_replace,到底應該使用哪個函數(shù)呢?
一. str_repalce()用法
str_replace(find,replace,string,count)
find:規(guī)定要查找的字符串或數(shù)組;
replace:被用來替換的字符串或數(shù)組;
string:被查詢的字符串或數(shù)組;
count:可選,替換的次數(shù)
<?php
//實例一:字符串替換字符串
$str1 = str_replace("red","black","red green yellow pink purple");
echo $str1; //輸出結果為black green yellow pink purple
echo "<br>";
//實例二:數(shù)組的鍵值用字符串替換
$arr = array("blue","red","green","yellow");
$str1 = str_replace("red","pink",$arr,$count);
print_r($str1);
//輸出結果
//Array ( [0] => blue [1] => pink [2] => green [3] => yellow )
echo "<br>" . $count; //輸出替換次數(shù)1
//實例三:數(shù)組替換數(shù)組,一一映射替換
$arr1 = array("banana","orange");
$arr2 = array("pitaya","tomato");
$con_arr = array("apple","orange","banana","grape");
$con_rep = str_replace($arr1,$arr2,$con_arr,$count1);
print_r($con_rep);
//輸出結果
// Array ( [0] => apple [1] => tomato [2] => pitaya [3] => grape )
echo "<br>" . $count1; //輸出替換次數(shù)2
//實例四:如$search為數(shù)組,$replace為字符串時
$search = array("banana","grape");
$replace = "tomato";
$arr = array("banana","apple","orange","grape");
$new_arr = str_replace($search,$replace,$arr,$count2);
print_r($new_arr);
//輸出結果
//Array ( [0] => tomato [1] => apple [2] => orange [3] => tomato )
echo "<br>" . $count2; //輸出替換次數(shù)2
?>
二. strtr()用法
<?php
//用法一:strtr(string,from,to)
echo strtr("I Love you","Lo","lO");
/*輸出結果:
I lOve yOu
you中的o被替換了,很詭異,要注意可能;
這種用法也不能被替換為空,不生效;
不推薦使用該方法*/
//用法二:strtr(string,array)
$arr = array("Hello" => "Hi", "world" => "earth");
echo strtr("Hello world",$arr);
/*輸出結果:
Hi earth*/
?>
三. 效率對比
筆者使用apache環(huán)境和nginx環(huán)境做了測試:5.6版本 str_replace 比 strtr 平均效率高4倍,7.1版本效率基本相同。
四. 總結
使用strtr會出現(xiàn)一些不可控的錯誤,strtr被查詢替換的只能是字符串,而且str_replace函數(shù)比strtr效率高、速度快,因此推薦使用str_replace函數(shù)替換字符串或數(shù)組。
到此這篇關于php函數(shù)之strtr和str_replace的用法詳解以及效率分析的文章就介紹到這了,更多相關php函數(shù)strtr和str_replace對比內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關文章。希望大家以后多多支持!

網(wǎng)公網(wǎng)安備