Str_replace用于多个项目

时间:2011-09-30 02:51:42

标签: php string str-replace

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

9 个答案:

答案 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;,