Php 如何精确地替换字符串

Php 如何精确地替换字符串,php,Php,我想替换字符串为我是a,我的儿子是b,但结果是我是a,我的儿子是a。有没有一个函数可以实现这一点?这是因为php首先搜索chan,在两个位置替换它,然后找不到第二个字符串。首先搜索更长的字符串。这可以: $string = 'I am chan, my son is chan_junior'; $search = array('chan', 'chan_junior'); $replace = array('a', 'b'); $new = str_replace($search, $repla

我想替换字符串为我是a,我的儿子是b,但结果是我是a,我的儿子是a。有没有一个函数可以实现这一点?

这是因为php首先搜索chan,在两个位置替换它,然后找不到第二个字符串。首先搜索更长的字符串。

这可以:

$string = 'I am chan, my son is chan_junior';
$search = array('chan', 'chan_junior');
$replace = array('a', 'b');
$new = str_replace($search, $replace, $string);
echo $new;

若你们不想使用这个模式,你们可以简单地重新排序$search=array'chan_junior','chan';
$string = 'I am chan, my son is chan_junior';
$search = array('chan', 'chan_junior');
$replace = array('a', 'b');
$str_arr = explode(' ', $string);
$count = count($str_arr);
for ($i = 0; $i < $count; $i ++)
{
    $word = preg_replace('/^[^A-Za-z0-9\-]*|[^A-Za-z0-9\-]*$/', '', $str_arr[$i]);
    if (in_array($word, $search))
    {
        $key = array_search($word, $search);
        $str_arr[$i] = str_replace($word, $replace[$key], $str_arr[$i]);
    }
}
$new = implode(' ', $str_arr);
echo $new;