在PHP5中使用多个/不同的值搜索和替换多个值?

时间:2009-02-11 01:57:53

标签: php arrays string replace

是否有内置的PHP函数用一个数组替换字符串中的多个值,该数组确切地说明什么被替换为什么?

例如:

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

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

5 个答案:

答案 0 :(得分:75)

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

答案 1 :(得分:18)

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

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

答案 2 :(得分:1)

str_replace()就是这么做的。

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

答案 3 :(得分:1)

在某些情况下,有人希望用不同的值(每次出现)替换相同的字符串。例如,用数字++或数组中的值替换所有 ##

$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;

答案 4 :(得分:0)

对于您所拥有的内容,只需将该数组作为搜索和替换(str_replace传递给array_keys,如果您希望按原样保留数组,则使用{{1}}。