0

誰でも私を助けてもらえますか?このテキストまたはより小さなセクションを変数に格納した場合、「{ }」内の単語をランダム化するにはどうすればよいでしょうか?
たとえば、最初のものは「{important|essential|crucial|critical|vital|significant}」ですが、PHP にこれらの単語の 1 つをランダムに選択させてエコーさせるにはどうすればよいですか? 私を助けてくれてありがとう。:)

4

3 に答える 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

nested({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 に答える