Str заменить для нескольких элементов


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

8 71

8 ответов:

str_replace() можно взять массив, так что вы могли бы сделать:

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

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

$new_str = preg_replace('~[\\/:*?"<>|]~', ' ', $string);

такой:

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

или, в современном PHP (что-нибудь от 5.4 и далее), Слабый менее многословный:

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

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

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

/ / выход: replace1 replace2

str_replace(
    array("search","items"),
    array("replace", "items"),
    $string
);

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

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

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

выход:

$s2: "строка"

Я думаю, вы смотрите после этого:

// 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);
}

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

результат

"спринклерный и противопожарный Монтажник", "парогенератор","терраццо, плиточный и мраморный сеттер",