PHP: 字符串操作选择随机

PHP: String manipulation choose random

我有以下字符串

Make me {cum|cumm}.... mmmm {Phones|Phone's} {gonna|going to|going}

有一些角色。

大括号内的文字有一根竖线符号“|”。意味着,两个值中的任何一个。

如果我们取 {Phone|Phone's} 我想随机选择其中一个,它可以有两个或三个以上的值,甚至可以在大括号中有一个值。

所以上面的字符串可以导致以下结果之一

  1. 让我高潮.... mmmm Phone我们要去

  2. 让我高潮....嗯Phone要去

  3. 让我高潮....嗯嗯Phone开始了

  4. 让我高潮....嗯Phone要去

更新

我有一个更长的解决方案

preg_match_all("~\{(.*?)\}~",$string,$matches);

    foreach($matches[1] as $match) {
        $options = explode("|", $match);
        if(count($options) > 0) {
            $key = array_rand($options);
            $randomValue = $options[$key];

            $string = str_replace("{".$match."}", $randomValue, $string);
        }
    }

    return $string;

使用preg_replace_callback函数,拆分匹配项,并从结果数组中随机取一个元素

$new = preg_replace_callback('/{([^}]+)}/', 
                             function($i) { 
                               $t = explode('|', $i[1]); 
                               return $t[array_rand($t)]; }, 
                             $string);
echo $new;