Я помню, как это делалось раньше, но не могу найти код. Я использую str_replace для замены одного символа следующим образом: str_replace(':', ' ', $string);
, но я хочу заменить все следующие символы \/:*?"<>|
, не делая str_replace для каждого.
Str_replace для нескольких элементов
Ответ 1
str_replace()
может принимать массив, чтобы вы могли:
$new_str = str_replace(str_split('\\/:*?"<>|'), ' ', $string);
В качестве альтернативы вы можете использовать preg_replace()
:
$new_str = preg_replace('~[\\\\/:*?"<>|]~', ' ', $string);
Ответ 2
Вот так:
str_replace(array(':', '\\', '/', '*'), ' ', $string);
Или, в современном PHP (что-то начиная с 5.4 года), слегка менее многословное:
str_replace([':', '\\', '/', '*'], ' ', $string);
Ответ 3
str_replace(
array("search","items"),
array("replace", "items"),
$string
);
Ответ 4
Например,, если вы хотите заменить search1 на replace1 и search2 на replace2, тогда будет работать следующий код:
print str_replace(
array("search1","search2"),
array("replace1", "replace2"),
"search1 search2"
);
//Выход: replace1 replace2
Ответ 5
Если вы заменяете только отдельные символы, вы должны использовать strtr()
Ответ 6
Вы можете использовать preg_replace(). Следующий пример можно запустить с помощью командной строки php:
<?php
$s1 = "the string \\/:*?\"<>|";
$s2 = preg_replace("^[\\\\/:\*\?\"<>\|]^", " ", $s1) ;
echo "\n\$s2: \"" . $s2 . "\"\n";
?>
Вывод:
$s2: "строка
Ответ 7
У меня была ситуация, при которой мне пришлось заменять теги HTML двумя различными результатами замены.
$trades = "<li>Sprinkler and Fire Protection Installer</li>
<li>Steamfitter </li>
<li>Terrazzo, Tile and Marble Setter</li>";
$s1 = str_replace('<li>', '"', $trades);
$s2 = str_replace('</li>', '",', $s1);
echo $s2;
результат
"Установщик спринклеров и противопожарной защиты", "Пароход", "Terrazzo, Tile and Marble Setter",