web-dev-qa-db-ja.com

複数のアイテムのstr_replace

以前にこれを行ったことを覚えていますが、コードが見つかりません。 str_replaceを使用して、1つの文字をstr_replace(':', ' ', $string);のように置き換えますが、次のすべての文字\/:*?"<>|を置き換えます。

96
sameold

str_replace() は配列を取ることができるので、次のことができます。

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

または、 preg_replace() を使用できます。

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

このような:

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

または、現代のPHP(5.4以降のすべて)では、少し言葉遣いが少ない:

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

たとえば、search1をreplace1に、search2をreplace2に置き換える場合、次のコードが機能します。

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

//出力:replace1 replace2

59
Sumoanand
str_replace(
    array("search","items"),
    array("replace", "items"),
    $string
);
43
Marty

単一の文字のみを置換する場合は、 strtr() を使用する必要があります

6
Explosion Pills

preg_replace() を使用できます。次の例は、コマンドラインphpを使用して実行できます。

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

出力:

$ s2: "文字列"

1
GreenMatt

あなたはこれを探していると思います:

// 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
Erald Karakashi