Я помню, как делал это раньше, но не могу найти код. Я использую str_replace для замены одного символа следующим образом: str_replace(':', ' ', $string);
но я хочу заменить все следующие символы \/:*?"<>|
, не выполняя str_replace для каждого.
php
string
str-replace
одного возраста
источник
источник
Ответы:
str_replace()
может принимать массив, поэтому вы можете:В качестве альтернативы вы можете использовать
preg_replace()
:источник
str_replace()
передpreg_replace()
(или наоборот) в случае OP?'~[\\+><-]~'
(обратите внимание, где-
это). Тире (-
) - это метасимвол регулярного выражения, поэтому его нужно экранировать или стратегически поместить в класс символов (все внутри[]
). См. Этот ответ: stackoverflow.com/a/7604888/396458Как это:
Или, в современном PHP (начиная с 5.4), немного менее многословно:
источник
Например , если вы хотите заменить search1 на replace1 и search2 на replace2, то следующий код будет работать:
источник
источник
Если вы заменяете только отдельные символы, вам следует использовать
strtr()
источник
Вы можете использовать preg_replace () . Следующий пример можно запустить с помощью командной строки php:
Вывод:
источник
У меня была ситуация, когда мне пришлось заменить теги HTML двумя разными результатами замены.
результат
«Установщик спринклерных и противопожарных систем», «Пароуборщик», «Установщик терраццо, плитки и мрамора»,
источник
Думаю, вы за этим следите:
источник
В моем случае использования я параметризовал некоторые поля в документе HTML, и после загрузки этих полей я сопоставляю и заменяю их с помощью метода str_replace.
источник