Подтвердить что ты не робот

Str_replace для нескольких элементов

Я помню, как это делалось раньше, но не могу найти код. Я использую str_replace для замены одного символа следующим образом: str_replace(':', ' ', $string);, но я хочу заменить все следующие символы \/:*?"<>|, не делая str_replace для каждого.

4b9b3361

Ответ 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",