douyi8408 2011-03-24 07:33 采纳率: 0%
浏览 65
已采纳

用随机值替换文本中的变量

I have a block of text that contains a variable:

Hello my name is john #last# 

I have 20 different last names in a array that can be used, how can I replace #last# with a random last name from the array? Meaning how can I read between the #'s and get "last" then use that to determine which array to grab from and input a random value

  • 写回答

4条回答 默认 最新

  • duanjupiao4730 2011-03-24 07:42
    关注

    preg_replace_callback() could be your friend.

    Basic example:

    $s="Hello my name is John #last#";
    
    function random_name($m) {
        $a=array('Fos', 'Smith', 'Metzdenafbuhrer', 'the Enlightened');
        foreach ($m as $match) {
            return $a[array_rand($a)];
        }
    }
    
    $news=preg_replace_callback('/#last#/', 'random_name', $s);
    

    UPDATE: I created another example for you, with more flexibility:

    $s="Hello #title#, my name is John #last#";
    
    function random_name($m) {
        $a=array(
            'last' => array('Fos', 'Smith', 'Metzdenafbuhrer', 'the Enlightened'),
            'title' => array('Honey', 'Boss', ', I am your father'),
            );
        foreach ($m as $match) {
            $v=trim($match, '#');
            return $a[$v][array_rand($a[$v])];
        }
    }
    
    $news=preg_replace_callback('/(#[a-z]+#)/', 'random_name', $s);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 plotBAPC画图出错
  • ¥30 关于#opencv#的问题:使用大疆无人机拍摄水稻田间图像,拼接成tif图片,用什么方法可以识别并框选出水稻作物行
  • ¥15 Python卡尔曼滤波融合
  • ¥20 iOS绕地区网络检测
  • ¥15 python验证码滑块图像识别
  • ¥15 根据背景及设计要求撰写设计报告
  • ¥20 能提供一下思路或者代码吗
  • ¥15 用twincat控制!
  • ¥15 请问一下这个运行结果是怎么来的
  • ¥15 单通道放大电路的工作原理