PHP: 字符串操作选择随机
PHP: String manipulation choose random
我有以下字符串
Make me {cum|cumm}.... mmmm {Phones|Phone's} {gonna|going to|going}
有一些角色。
大括号内的文字有一根竖线符号“|”。意味着,两个值中的任何一个。
如果我们取 {Phone|Phone's} 我想随机选择其中一个,它可以有两个或三个以上的值,甚至可以在大括号中有一个值。
所以上面的字符串可以导致以下结果之一
让我高潮.... mmmm Phone我们要去
让我高潮....嗯Phone要去
让我高潮....嗯嗯Phone开始了
让我高潮....嗯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;
我有以下字符串
Make me {cum|cumm}.... mmmm {Phones|Phone's} {gonna|going to|going}
有一些角色。
大括号内的文字有一根竖线符号“|”。意味着,两个值中的任何一个。
如果我们取 {Phone|Phone's} 我想随机选择其中一个,它可以有两个或三个以上的值,甚至可以在大括号中有一个值。
所以上面的字符串可以导致以下结果之一
让我高潮.... mmmm Phone我们要去
让我高潮....嗯Phone要去
让我高潮....嗯嗯Phone开始了
让我高潮....嗯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;