Str_replace多个项目


115

我记得以前做过,但是找不到代码。我使用str_replace替换一个这样的字符:str_replace(':', ' ', $string);但我想替换以下所有字符\/:*?"<>|,而不对每个字符都进行str_replace。


2
您想用空格替换所有这些字符吗?
宙斯记

7
不要害怕参考出色的php.net手册,并查看params部分以查看是否可以实现所需的功能。
迈克B

Answers:


117

str_replace() 可以采用数组,因此您可以执行以下操作:

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

另外,您可以使用preg_replace()

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

2
假设OP意味着应替换反斜杠,则preg_replace模式对我不起作用。为了使反斜杠按预期工作,我必须在模式中使用其中的4个(即“ \\\\”)。
GreenMatt 2011年

1
好的答案,在其中添加@dogbert答案将使其对于那些不阅读手册并且没有意识到str_split返回数组的人来说是完整的。
Bradmage 2015年

在OP的情况下str_replace()胜过preg_replace()(反之亦然)有什么优势?
ludditedev

1
@ludditedev两种方式都没有真正的优势,这只是一个优先事项
NullUserException

1
@MadhurBhaiya将正则表达式更改为'~[\\+><-]~'(注意在哪里-)。破折号(-)是正则表达式元字符,因此需要转义或策略性地放置在字符类中(里面的所有内容[])。看到这个答案:stackoverflow.com/a/7604888/396458
NullUserException

179

像这样:

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

或者,在现代PHP(从5.4开始的任何版本中)中,有些不那么罗word:

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

72

例如,如果您想将search1替换为replace1并将search2替换为replace2,那么以下代码将起作用:

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

//输出:replace1 replace2


48
str_replace(
    array("search","items"),
    array("replace", "items"),
    $string
);


2

您可以使用preg_replace()。可以使用命令行php运行以下示例:

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

输出:

$ s2:“字符串”


字符类内部的转义太多。(请参见已接受的答案)
mickmackusa

0

我遇到一种情况,必须用两个不同的替换结果替换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;

结果

“洒水装置和消防装置”,“蒸汽安装工”,“水磨石,瓷砖和大理石安装工”


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);
}

0

在我的用例中,我对HTML文档中的某些字段进行了参数化,一旦加载了这些字段,便使用str_replace方法进行匹配和替换。

<?php echo str_replace(array("{{client_name}}", "{{client_testing}}"), array('client_company_name', 'test'), 'html_document'); ?>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.