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

Php 用随机值替换文本中的变量,php,Php,我有一个包含变量的文本块: Hello my name is john #last# 我在一个可以使用的数组中有20个不同的姓氏,如何用数组中的随机姓氏替换#last#?这意味着我如何读取#和“last”之间的值,然后使用该值确定从哪个数组中获取并输入用户喜欢的随机值 您可以像 或者更好的方法是像fabrik所说的那样使用printf,但是您可以使用这个rand()方法来选择一个名称。 或者更好的是,像法布里克说的那样使用printf,但您可以使用这个rand()方法来选择一个名称

我有一个包含变量的文本块:

Hello my name is john #last# 
我在一个可以使用的数组中有20个不同的姓氏,如何用数组中的随机姓氏替换#last#?这意味着我如何读取#和“last”之间的值,然后使用该值确定从哪个数组中获取并输入用户喜欢的随机值


您可以像



或者更好的方法是像fabrik所说的那样使用printf,但是您可以使用这个rand()方法来选择一个名称。


或者更好的是,像法布里克说的那样使用printf,但您可以使用这个rand()方法来选择一个名称。

可能是您的朋友

基本示例:

$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);
更新:我为您创建了另一个更灵活的示例:

$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);
可能是你的朋友

基本示例:

$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);
更新:我为您创建了另一个更灵活的示例:

$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);

或者您可以使用
preg\u replace
/e
preg\u replace\u EVAL
修饰符:

$str = '...' // your input text
$names = array('smith', 'brown', 'white', 'red');

echo preg_replace('/#last#/e', '$names[rand(0, count($names) - 1)]', $str);

或者您可以使用
preg\u replace
/e
preg\u replace\u EVAL
修饰符:

$str = '...' // your input text
$names = array('smith', 'brown', 'white', 'red');

echo preg_replace('/#last#/e', '$names[rand(0, count($names) - 1)]', $str);

这是家庭作业问题吗?如果是Jamal,给它一个家庭作业标签,让人们给你额外的帮助。这是一个家庭作业问题吗?如果是Jamal,给它一个家庭作业标签,让人们给你额外的帮助。谢谢回复!唯一的问题是#之间的单词可以是大约5个不同的单词,是否可以在#之间使用通配符并抓取文本以查看使用哪个数组?谢谢回复!唯一的问题是#之间的单词可以是5个不同的单词,是否可以在#之间使用通配符并抓取文本以查看使用哪个数组?