我记得以前做过这个,但是找不到代码了。我使用 str_replace
替换一个字符,例如: str_replace(':', ' ', $string);
但我想要替换以下所有字符 \/:*?"<>|
,而不用每次都进行一次 str_replace。
我记得以前做过这个,但是找不到代码了。我使用 str_replace
替换一个字符,例如: str_replace(':', ' ', $string);
但我想要替换以下所有字符 \/:*?"<>|
,而不用每次都进行一次 str_replace。
像这样:
str_replace(array(':', '\\', '/', '*'), ' ', $string);
或者,在现代 PHP(从5.4版开始)中,稍微简化一些:
str_replace([':', '\\', '/', '*'], ' ', $string);
str_replace()
函数可以接受一个数组作为参数,所以您可以这样做:
$new_str = str_replace(str_split('\\/:*?"<>|'), ' ', $string);
或者你可以使用preg_replace()
函数:
$new_str = preg_replace('~[\\\\/:*?"<>|]~', ' ', $string);
str_replace()
和 preg_replace()
之间有什么优势呢? - aronmoshe_m+-><
。根据您的答案,我尝试了:preg_replace('〜[\\ + - > <]〜','',$s);
。但它也删除了数字(0-9)。错在哪里?演示请见:https://3v4l.org/inS5W - Madhur Bhaiya'~[\\+><-]~'
(请注意 -
的位置)。破折号(-
)是一个正则表达式元字符,因此需要转义或在字符类中放置。请参见此答案:https://dev59.com/YWsz5IYBdhLWcg3w3r0J#7604888 - NullUserExceptionprint str_replace(
array("search1","search2"),
array("replace1", "replace2"),
"search1 search2"
);
// 输出:替换1 替换2
str_replace(
array("search","items"),
array("replace", "items"),
$string
);
<?php
$s1 = "the string \\/:*?\"<>|";
$s2 = preg_replace("^[\\\\/:\*\?\"<>\|]^", " ", $s1) ;
echo "\n\$s2: \"" . $s2 . "\"\n";
?>
输出:
$s2:“the string ”
$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);
}
<?php echo str_replace(array("{{client_name}}", "{{client_testing}}"), array('client_company_name', 'test'), 'html_document'); ?>
preg_replace()
对于多个项目来说是最好的。请检查:
$invoice_no = preg_replace('~[\\+:><-]~', "",rand(0, 10) . now());
str_replace()
函数:$invoice_no = str_replace("-", "",rand(0, 1000) . now());