Rumah  >  Artikel  >  pembangunan bahagian belakang  >  strtr vs str_replace: Bilakah saya harus menggunakan setiap fungsi penggantian rentetan PHP?

strtr vs str_replace: Bilakah saya harus menggunakan setiap fungsi penggantian rentetan PHP?

DDD
DDDasal
2024-11-04 22:07:02240semak imbas

strtr vs str_replace: When should I use each PHP string replacement function?

strtr vs str_replace: Bila Perlu Menggunakan Fungsi Penggantian Berbeza

Dalam PHP, kedua-dua fungsi strtr dan str_replace boleh melakukan penggantian rentetan. Walau bagaimanapun, pemilihan fungsi yang betul bergantung pada keperluan khusus dan kes penggunaan.

Kontras dalam Susunan Penggantian

Walaupun output yang terhasil mungkin kelihatan sama dalam beberapa kes, terdapat perbezaan halus antara dua fungsi:

echo strtr('test string', 'st', 'XY'); // "YeXY XYring"
echo str_replace(array('s', 't'), array('X', 'Y'), 'test string'); // "YeXY XYring"

strtr menggantikan subrentetan dari kanan ke kiri, manakala str_replace menggantikan dari kiri ke kanan. Perbezaan ini menjadi jelas apabila menggantikan subrentetan bertindih:

echo strtr('1 2 3 3', '1 2 3', 'XYZ'); // "1 2 3 Z"
echo str_replace(array('1 2 3', '1 2'), array('XYZ', 'AB'), '1 2 3 3'); // "ABXYZ"

Menggantikan Kekunci Tatasusunan lwn. Subrentetan Berbilang

Perbezaan lain terletak pada cara tatasusunan penggantian dikendalikan:

$arr = array("1" => "A", "2" => "B", "3" => "C");
echo strtr('123', $arr); // "ABC"
echo str_replace(array_keys($arr), array_values($arr), '123'); // "ABC"

Dalam kes ini, kedua-dua fungsi menggantikan aksara dengan nilai tatasusunan yang sepadan. Walau bagaimanapun, strtr memerlukan tatasusunan bersekutu dengan pasangan nilai kunci, manakala str_replace boleh beroperasi pada tatasusunan mudah subrentetan dan penggantian.

Keutamaan Penggantian

strtr mengutamakan penggantian berdasarkan panjang subrentetan diganti, tertib menurun. Sebaliknya, str_replace memproses penggantian dalam susunan yang ditakrifkan dalam tatasusunan gantian. Ini boleh membawa kepada hasil yang berbeza, seperti yang ditunjukkan oleh contoh berikut:

$text = "PHP: Hypertext Preprocessor";
$text_strtr = strtr($text, array("PHP: Hypertext Preprocessor" => "PHP", "PHP" => "PHP: Hypertext Preprocessor"));
$text_str_replace = str_replace(array("PHP", "PHP: Hypertext Preprocessor"), array("PHP: Hypertext Preprocessor", "PHP"), $text);

var_dump($text_strtr); // string(3) "PHP"
var_dump($text_str_replace); // string(27) "PHP: Hypertext Preprocessor"

Kesimpulannya, kedua-dua strtr dan str_replace menawarkan pendekatan yang berbeza untuk penggantian rentetan dalam PHP. Memahami nuansa halus mereka dalam tingkah laku dan sintaks akan membimbing anda dalam memilih fungsi yang sesuai untuk kes penggunaan khusus anda.

Atas ialah kandungan terperinci strtr vs str_replace: Bilakah saya harus menggunakan setiap fungsi penggantian rentetan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn