我记得以前这样做过,但找不到代码。我使用str_replace替换一个这样的字符:str_replace(':', ' ', $string);
但我想替换所有以下字符\/:*?"<>|
,而不是为每个字符执行str_replace。
答案 0 :(得分:158)
像这样:
str_replace(array(':', '\\', '/', '*'), ' ', $string);
或者,在现代PHP(从5.4开始的任何事情)中,稍微不那么罗嗦:
str_replace([':', '\\', '/', '*'], ' ', $string);
答案 1 :(得分:96)
str_replace()
可以接受一个数组,所以你可以这样做:
$new_str = str_replace(str_split('\\/:*?"<>|'), ' ', $string);
或者您可以使用preg_replace()
:
$new_str = preg_replace('~[\\\\/:*?"<>|]~', ' ', $string);
答案 2 :(得分:56)
例如,如果您想将search1替换为replace1而将search2替换为replace2,则以下代码将起作用:
print str_replace(
array("search1","search2"),
array("replace1", "replace2"),
"search1 search2"
);
//输出:replace1 replace2
答案 3 :(得分:41)
str_replace(
array("search","items"),
array("replace", "items"),
$string
);
答案 4 :(得分:6)
如果您只是替换单个字符,则应使用strtr()
答案 5 :(得分:1)
您可以使用preg_replace()。可以使用命令行php运行以下示例:
<?php
$s1 = "the string \\/:*?\"<>|";
$s2 = preg_replace("^[\\\\/:\*\?\"<>\|]^", " ", $s1) ;
echo "\n\$s2: \"" . $s2 . "\"\n";
?>
输出:
$ s2:“字符串”
答案 6 :(得分:0)
我想你正在照顾这个:
// 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);
}
答案 7 :(得分:0)
在我的用例中,我对HTML文档中的某些字段进行了参数化,一旦加载了这些字段,便使用str_replace方法进行匹配和替换。
<?php echo str_replace(array("{{client_name}}", "{{client_testing}}"), array('client_company_name', 'test'), 'html_document'); ?>
答案 8 :(得分:-1)
我有一种情况,我必须用两个不同的替换结果替换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;
结果
&#34;洒水喷头和消防安装工具&#34;,&#34; Steamfitter&#34;,&#34; Terrazzo,Tile和Marble Setter&#34;,