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