谁能帮帮我吗?假设我将此文本或较小的部分存储在变量中,我如何随机化 '{ }' 中的单词?
例如,第一个是“{important|essential|crucial|critical|vital|significant}”如何让 PHP 随机选择其中一个词然后回显?谢谢你帮助我。:)
问问题
3417 次
3 回答
3
http://webarto.com/62/random-sentence-spinning-function
function get_random($matches)
{
$rand = array_rand($split = explode("|", $matches[1]));
return $split[$rand];
}
function show_randomized($str)
{
$new_str = preg_replace_callback('/\{([^{}]*)\}/im', "get_random", $str);
if ($new_str !== $str) $str = show_randomized($new_str);
return $str;
}
应用于您的文本文件... http://ideone.com/rkuf6
于 2011-07-31T14:12:11.583 回答
2
- 去掉开头和结尾的花括号,你可以使用
trim()
|
在使用时爆炸生成的字符串explode()
- 用于
array_rand()
上一步中的数组
于 2011-07-31T14:13:48.200 回答
1
不适用于嵌套({a|x {b|c} y|z})!
function doStuff($from){
$to="";
while(($pos=strpos($from,'{'))!==false){
$to.=substr($from,0,$pos);
$from=substr($from,$pos);
$closepos=strpos($from,'}');
$arr=explode('|',substr($from,1,$closepos-1));
$to.=$arr[array_rand($arr)];
$from=substr($from,$closepos+1);
}
return $to.$from;
}
于 2011-07-31T14:17:24.590 回答