Saya ingat melakukan ini sebelumnya, tetapi tidak dapat menemukan kodenya. Saya menggunakan str_replace untuk mengganti satu karakter seperti ini: str_replace(':', ' ', $string);
tetapi saya ingin mengganti semua karakter berikut \/:*?"<>|
, tanpa melakukan str_replace untuk masing-masing.
php
string
str-replace
sebaya
sumber
sumber
Jawaban:
str_replace()
dapat mengambil array, jadi Anda dapat melakukan:Alternatifnya Anda bisa menggunakan
preg_replace()
:sumber
str_replace()
overpreg_replace()
(atau sebaliknya) dalam kasus OP?'~[\\+><-]~'
(perhatikan di mana-
is). Tanda hubung (-
) adalah karakter meta regex, jadi perlu di-escape atau ditempatkan secara strategis di kelas karakter (semua yang ada di dalamnya[]
). Lihat jawaban ini: stackoverflow.com/a/7604888/396458Seperti ini:
Atau, dalam PHP modern (mulai dari 5.4 dan seterusnya), sedikit lebih tidak bertele-tele:
sumber
Misalnya , jika Anda ingin mengganti search1 dengan replace1 dan search2 dengan replace2 maka kode berikut akan berfungsi:
sumber
sumber
Jika Anda hanya mengganti karakter tunggal, Anda harus menggunakan
strtr()
sumber
Anda bisa menggunakan preg_replace () . Contoh berikut dapat dijalankan menggunakan baris perintah php:
Keluaran:
sumber
Saya mengalami situasi di mana saya harus mengganti tag HTML dengan dua hasil penggantian yang berbeda.
hasil
"Alat Penyiram dan Pemasang Proteksi Kebakaran", "Steamfitter", "Terrazzo, Tile and Marble Setter",
sumber
Saya kira Anda sedang menjaga ini:
sumber
Dalam kasus penggunaan saya, saya membuat parameterisasi beberapa bidang dalam dokumen HTML, dan setelah saya memuat bidang ini, saya mencocokkan dan menggantinya menggunakan metode str_replace.
sumber