使用 PHP 进行内容旋转?

发布于 2024-11-27 07:55:41 字数 209 浏览 0 评论 0原文

有人可以帮我吗?假设我有 此文本 或存储在变量中的较小部分,我如何随机化'{}'?
例如,第一个是“{important|essential|crucial|ritic|vital|significant}”,如何让PHP随机选择其中一个单词然后回显它?谢谢你帮助我。 :)

Can anyone please help me? Say if I had this text or a smaller section stored in a variable, how can I randomise the words in the '{ }' ?
For example, the first one is "{important|essential|crucial|critical|vital|significant}" how can I make PHP choose one of those words randomly and then echo it? Thanks for helping me. :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

浪漫之都 2024-12-04 07:55:41

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

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;
}

Applied on your text file... http://ideone.com/rkuf6

无法言说的痛 2024-12-04 07:55:41
  • 去掉开头和结尾的大括号,您可以使用 trim()
  • 使用 explode()| 上爆炸结果字符串
  • 使用 array_rand () 代表您在上一步中获得的数组
  • strip off initial and ending curly braces, you can use trim()
  • explode the resulting string on | using explode()
  • use array_rand() for the array you had in last step
无敌元气妹 2024-12-04 07:55:41

不适用于嵌套({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;
}

Will not work with 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;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文