Php 用随机值替换字符串中重复出现的值

Php 用随机值替换字符串中重复出现的值,php,arrays,foreach,Php,Arrays,Foreach,我想取is并用三个随机项替换它 所以:今天{是{不是}不是一个晴朗的日子 但是,如果is在另一个字符串中有五个匹配项,比如一篇文章,我想用{was | was not | is not}中的随机值替换每个匹配项 我怎样才能做到这一点 到目前为止,我知道必须使用str_replace,在foreach循环中使用数组。但是我不能让它工作 非常感谢您对我们的任何帮助 谢谢 试试这个: Today is a sunny day 搜索的正则表达式中的“e”修饰符导致替换字符串作为PHP代码计算。然后使用

我想取is并用三个随机项替换它

所以:今天{是{不是}不是一个晴朗的日子

但是,如果is在另一个字符串中有五个匹配项,比如一篇文章,我想用{was | was not | is not}中的随机值替换每个匹配项

我怎样才能做到这一点

到目前为止,我知道必须使用str_replace,在foreach循环中使用数组。但是我不能让它工作

非常感谢您对我们的任何帮助

谢谢

试试这个:

Today is a sunny day
搜索的正则表达式中的“e”修饰符导致替换字符串作为PHP代码计算。然后使用数组\u rand从$replacements中选择一个随机键

$replacements = array("was", "wasn't", "isn't");
preg_replace("/\wis\w/e", "$replacements[array_rand($replacements)]", $text);

看到这个古怪的解决方案了吗
$str = "Today is a sunny day";
$findme = "is";
$arr = array("was","wasn't","isn't");
 $tmp = explode("is",$str);
 $str = $tmp[0];
 for($i=1;$i<count($tmp);$i++)
    $str .= array_rand($arr) . $tmp[$i];

澄清:如果字符串包含的“is”少于5次,则替换为所有3次的整个块。如果“is”被发现>=5次,那么只需随机选择3个中的一个,而不是将其替换为3个块?
$d = array("was","wasn't","isn't");
$st = "Today is a sunny day, is it not?";
$arr = explode(" ", $st);



        for($i=0;$i<count($arr);$i++){
             if ($arr[$i] == "is"){
             $r =  rand(0, 2);
             $arr[$i] = $d[$r];
        }
        }

foreach($arr as $v){

    echo $v." ";
}

?>
Today wasn't a sunny day, was it not?