Str_replace для нескольких предметов - PullRequest
97 голосов
/ 30 сентября 2011

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

Ответы [ 8 ]

160 голосов
/ 30 сентября 2011

Примерно так:

str_replace(array(':', '\\', '/', '*'), ' ', $string);

Или, в современном PHP (начиная с версии 5.4 и выше), немного менее многословно:

str_replace([':', '\\', '/', '*'], ' ', $string);
99 голосов
/ 30 сентября 2011

str_replace() может принимать массив, поэтому вы можете сделать:

$new_str = str_replace(str_split('\\/:*?"<>|'), ' ', $string);

В качестве альтернативы вы можете использовать preg_replace():

$new_str = preg_replace('~[\\\\/:*?"<>|]~', ' ', $string);
60 голосов
/ 10 февраля 2015

Например, , если вы хотите заменить search1 на replace1 и search2 на replace2, тогда будет работать следующий код:

print str_replace(
    array("search1","search2"),
    array("replace1", "replace2"),
    "search1 search2"
);

// Вывод: replace1 replace2

43 голосов
/ 30 сентября 2011
str_replace(
    array("search","items"),
    array("replace", "items"),
    $string
);
6 голосов
/ 30 сентября 2011

Если вы заменяете только один символ, вы должны использовать strtr()

1 голос
/ 30 сентября 2011

Вы можете использовать preg_replace () .Следующий пример можно запустить с помощью командной строки php:

<?php
$s1 = "the string \\/:*?\"<>|";
$s2 = preg_replace("^[\\\\/:\*\?\"<>\|]^", " ", $s1) ;
echo "\n\$s2: \"" . $s2 . "\"\n";
?>

Вывод:

$ s2: "строка"

0 голосов
/ 02 октября 2018

Полагаю, вы ищете это:

// example
private const TEMPLATE = __DIR__.'/Resources/{type}_{language}.json';

...

public function templateFor(string $type, string $language): string
{
   return \str_replace(['{type}', '{language}'], [$type, $language], self::TEMPLATE);
}
0 голосов
/ 15 февраля 2017

У меня была ситуация, когда мне приходилось заменять теги 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;

результат

«Установщик спринклеров и противопожарной защиты», «Steamfitter», «Terrazzo, Tile and Marble Setter»,

...