32

是否有一个内置的 PHP 函数可以用一个数组替换字符串中的多个值,该数组准确地指示用什么替换什么?

例如:

$searchreplace_array = Array('blah' => 'bleh', 'blarh' => 'blerh');
$string = 'blah blarh bleh bleh blarh';

结果将是:'bleh blerh bleh bleh blerh'。

4

5 回答 5

89

您正在寻找str_replace().

$string = 'blah blarh bleh bleh blarh';
$result = str_replace(
  array('blah', 'blarh'), 
  array('bleh', 'blerh'), 
  $string
);

// 附加提示:

而且,如果您遇到了示例中的关联数组,则可以像这样将其拆分:

$searchReplaceArray = array(
  'blah' => 'bleh', 
  'blarh' => 'blerh'
);
$result = str_replace(
  array_keys($searchReplaceArray), 
  array_values($searchReplaceArray), 
  $string
); 
于 2009-02-11T02:01:34.267 回答
23
$string = 'blah blarh bleh bleh blarh';
$trans = array("blah" => "blerh", "bleh" => "blerh");
$result = strtr($string,$trans);

您可以查看手册以获取详细说明。

于 2012-05-21T09:13:09.600 回答
1

str_replace()这样做。

您可以查看手册以获取更详细的说明。

于 2009-02-11T02:00:47.733 回答
1

万一有人正在寻找用不同的值(每次出现)替换相同的字符串。例如,用数组中的数字++ OR值替换所有## -

$split_at = '##';
$string = "AA ##  BB ##  CC ##  DD";
$new_string = '';
// echo $string;
$replace_num = 1;
$replace_arr = ['first' , 'second' , 'third'];
$split_at_cnt = substr_count($string, $split_at);
for ($split=0; $split <= $split_at_cnt; $split++)
{
    $new_string .= str_replace('##', ($replace_num++)." : ".$replace_arr[$split], substr( $string, 0, strpos($string, $split_at)+strlen($split_at)));
    $string = substr($string, strpos($string, $split_at)+strlen($split_at));
}

echo $new_string;
于 2018-07-18T14:30:25.240 回答
0

对于您所拥有的,只需将该数组str_replace作为搜索和替换传递(array_keys如果您想保持数组原样,请在搜索参数上使用)。

于 2009-02-11T02:02:31.520 回答