我记得以前这么做过,但找不到密码。我使用 str _ place 替换一个字符,如下所示: str_replace(':', ' ', $string);,但是我想替换以下所有字符 \/:*?"<>|,而不对每个字符执行 str _ place。
str_replace(':', ' ', $string);
\/:*?"<>|
像这样:
str_replace(array(':', '\\', '/', '*'), ' ', $string);
或者,在现代 PHP (从5.4开始的任何东西)中,稍微不那么冗长的:
str_replace([':', '\\', '/', '*'], ' ', $string);
您可以使用 Preg _ place ():
<?php $s1 = "the string \\/:*?\"<>|"; $s2 = preg_replace("^[\\\\/:\*\?\"<>\|]^", " ", $s1) ; echo "\n\$s2: \"" . $s2 . "\"\n"; ?>
产出:
$s2: “ the string”
str_replace() 可以接受一个数组,因此可以这样做:
str_replace()
$new_str = str_replace(str_split('\\/:*?"<>|'), ' ', $string);
或者你可以使用 preg_replace():
preg_replace()
$new_str = preg_replace('~[\\\\/:*?"<>|]~', ' ', $string);
str_replace( array("search","items"), array("replace", "items"), $string );
如果只替换单个字符,则应使用 strtr()
strtr()
例如 ,如果您想用 replace1替换 search1,用 replace2替换 search2,那么以下代码可以工作:
print str_replace( array("search1","search2"), array("replace1", "replace2"), "search1 search2" );
//输出: replace 1 replace 2
我遇到过这样的情况: 我必须用两个不同的替换结果来替换 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;
结果
“喷水灭火装置”、“蒸汽装配工”、“水磨石、瓦片和大理石排水器”、,
我猜你在照看这个:
// 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 文档中的一些字段,一旦加载了这些字段,我就使用 str _ place 方法来匹配和替换它们。
<?php echo str_replace(array("\{\{client_name}}", "\{\{client_testing}}"), array('client_company_name', 'test'), 'html_document'); ?>