Lembro-me de ter feito isso antes, mas não consigo encontrar o código. Eu uso str_replace para substituir um caractere como este: str_replace(':', ' ', $string);
mas quero substituir todos os caracteres a seguir \/:*?"<>|
, sem fazer um str_replace para cada um.
php
string
str-replace
o mesmo de sempre
fonte
fonte
Respostas:
str_replace()
pode pegar uma matriz, então você pode fazer:Alternativamente, você pode usar
preg_replace()
:fonte
str_replace()
maispreg_replace()
(ou vice-versa) no caso do OP?'~[\\+><-]~'
(observe onde-
está). O traço (-
) é um metacaractere regex, portanto, ele precisa escapar ou ser colocado estrategicamente na classe de caractere (tudo dentro[]
). Veja esta resposta: stackoverflow.com/a/7604888/396458Como isso:
Ou, no PHP moderno (qualquer coisa a partir de 5.4), o um pouco menos prolixo:
fonte
Por exemplo , se você deseja substituir search1 por replace1 e search2 por replace2, o código a seguir funcionará:
fonte
fonte
Se você estiver substituindo apenas caracteres únicos, deve usar
strtr()
fonte
Você pode usar preg_replace () . O exemplo a seguir pode ser executado usando linha de comando php:
Resultado:
fonte
Tive uma situação em que tive que substituir as tags HTML por dois resultados de substituição diferentes.
resultado
"Instalador de sprinkler e proteção contra incêndio", "Steamfitter", "Terrazzo, Tile and Marble Setter",
fonte
Acho que você está cuidando disso:
fonte
No meu caso de uso, eu parametrizei alguns campos em um documento HTML e, uma vez que carrego esses campos, faço a correspondência e substituo usando o método str_replace.
fonte