str_replace($search, $replace, $subject) mengembalikan salinan $subject yang setiap kemunculan $search-nya sudah diganti dengan $replace. str_replace('world', 'PHP', 'Hello world') mengembalikan "Hello PHP".
Fungsi ini mengembalikan string baru; variabel yang kamu berikan tidak diubah. Simpan hasilnya, bahkan ke variabel yang sama: $text = str_replace(...).
Sintaks
str_replace(
array|string $search,
array|string $replace,
string|array $subject,
int &$count = null
): string|array
Masing-masing dari tiga argumen pertama bisa berupa string atau array. Kalau $subject berupa array, penggantian dijalankan pada setiap elemen dan kamu mendapat array kembali dengan key yang sama: str_replace('.txt', '.md', ['a.txt', 'b.txt']) mengembalikan ['a.md', 'b.md']. Pencariannya peka huruf besar kecil dan mencocokkan teks biasa, bukan pola. Untuk pola, pakai preg_replace().
Mengganti beberapa string sekaligus
Berikan array untuk $search dan $replace. Nilai pencarian pertama diganti dengan pengganti pertama, yang kedua dengan pengganti kedua, dan seterusnya. Kalau $replace berupa satu string, setiap nilai pencarian diganti dengan string itu, dan inilah cara singkat untuk menghapus sekumpulan karakter.
Jebakan urutan dan strtr()
Dengan array, str_replace() menjalankan penggantian satu per satu pada seluruh string. Pencarian berikutnya bisa cocok dengan teks yang baru saja disisipkan oleh penggantian sebelumnya. strtr() dengan array mengganti semuanya dalam satu kali jalan, mencoba key terpanjang lebih dulu, dan tidak pernah menyentuh teks yang sudah diganti.
Pakai strtr() untuk menukar kata dan untuk placeholder template yang mungkin muncul di dalam nilainya.
Menghitung jumlah penggantian
Argumen keempat diisi dengan jumlah penggantian yang dilakukan. Berikan sebuah variabel; PHP akan menulis ke dalamnya.
Mengganti tanpa peka huruf besar kecil dengan str_ireplace
str_ireplace() menerima argumen yang sama dan mengabaikan huruf besar kecil saat mencocokkan. Penggantinya disisipkan persis seperti yang kamu tulis.
str_ireplace() hanya menyamakan huruf ASCII. Untuk penggantian yang tidak peka huruf besar kecil pada huruf beraksen atau huruf Sirilik, pakai preg_replace() dengan modifier i dan u.
Mengganti kemunculan pertama saja
str_replace() selalu mengganti semuanya. Untuk mengganti kecocokan pertama saja, cari dengan strpos() lalu potong dengan substr_replace():
Untuk kemunculan terakhir, pakai strrpos() sebagai ganti strpos().
Menghapus spasi, baris baru, dan karakter lain
Mengganti dengan string kosong berarti menghapus teksnya. Pembersihan yang umum adalah menghapus pergantian baris atau semua spasi, dan input berbahasa Jepang sering berisi spasi lebar penuh ( , U+3000) yang tidak cocok dengan pencarian " " biasa.
Taruh "\r\n" sebelum "\n" dan "\r" di dalam array, supaya pergantian baris Windows menjadi satu spasi, bukan dua.
Pertanyaan yang sering diajukan
Bagaimana cara mengganti teks di dalam string di PHP?
Pakai str_replace($search, $replace, $subject): str_replace('cat', 'dog', 'cat and cat') mengembalikan "dog and dog". Fungsi ini mengganti setiap kemunculan dan mengembalikan string baru; string aslinya tidak berubah.
Apakah str_replace peka huruf besar dan kecil?
Ya. str_replace('php', 'PHP', 'Php') tidak mengubah apa pun. Pakai str_ireplace(), yang menerima argumen yang sama dan mengabaikan huruf besar kecil.
Bagaimana cara mengganti kemunculan pertama saja di PHP?
str_replace() tidak punya argumen limit. Cari posisinya dengan strpos() lalu pakai substr_replace($s, $replace, $pos, strlen($search)), atau pakai preg_replace('/' . preg_quote($search, '/') . '/', $replace, $s, 1).
Bagaimana cara mengganti beberapa string sekaligus di PHP?
Berikan array: str_replace(['a', 'b'], ['1', '2'], $s). Penggantian dijalankan berurutan, jadi pencarian berikutnya bisa cocok dengan teks yang baru disisipkan oleh penggantian sebelumnya. strtr($s, ['a' => '1', 'b' => '2']) mengganti semuanya dalam satu kali jalan dan tidak pernah mengganti ulang.
Apakah str_replace bisa dipakai untuk teks Jepang?
Bisa. str_replace() mencocokkan byte, dan satu karakter UTF-8 yang utuh tidak pernah cocok di dalam karakter lain, jadi str_replace('東京', '大阪', $s) aman. Tidak perlu versi mb_.