Rumah > Artikel > pembangunan bahagian belakang > strtr vs str_replace: Bilakah saya harus menggunakan setiap fungsi penggantian rentetan PHP?
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!