在PHP中搜索多个值并将其替换为多个/不同的值?

utugiqy6  于 2023-03-11  发布在  PHP
关注(0)|答案(5)|浏览(136)

有没有一个内置的PHP函数可以用一个数组来替换字符串中的多个值,这个数组可以精确地指示用什么来替换什么?
例如:

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

结果会是:“布啦布啦布啦布啦”

2lpgd968

2lpgd9681#

您正在查找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
);
hpxqektj

hpxqektj2#

$string = 'blah blarh bleh bleh blarh';
$trans = array("blah" => "blerh", "bleh" => "blerh");
$result = strtr($string,$trans);

您可以查看manual了解详细说明。

uz75evzq

uz75evzq3#

以防有人想用不同的值替换相同的字符串(每次出现)。例如,用数组中的数字++ 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;
isr3a4wc

isr3a4wc4#

str_replace()就是这么做的。
您可以查看manual以获得更详细的说明。

oxiaedzo

oxiaedzo5#

对于所得到的结果,只需将该数组作为search和replace传递给str_replace(如果希望数组保持原样,请在search参数上使用array_keys)。

相关问题