使用PHP旋转内容?

时间:2011-07-31 14:08:53

标签: php string spinning

任何人都可以帮助我吗?如果我将this text或更小的部分存储在变量中,我该如何随机化“{}”中的字词?
例如,第一个是“{important | essential | critical | critical | important | important}}”如何让PHP随机选择其中一个单词然后回显呢?谢谢你的帮助。 :)

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

  • 剥离初始和结束花括号,您可以使用trim()
  • 使用|
  • explode()上展开结果字符串
  • array_rand()用于上一步中的数组

答案 2 :(得分: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;
}