PHP替换字符串中的随机单词并替换为变量

时间:2014-03-31 12:10:01

标签: php

我知道标题与其他问题相似,但我找不到我想要的内容。

我有一个变量,比如说:

$myVar = 'bottle';

然后我有一个字符串:

$myString = 'Hello this is my string';

我需要一些代码来选择$myString的随机词,并将其替换为$myVar。我怎么能这样做?

5 个答案:

答案 0 :(得分:6)

没有什么能比得上老式的PHP比赛了:

$myString = 'Hello this is my string';
$myVar = 'bottle';

$words = explode(' ', $myString);      // split the string into words    
$index = rand(0, count($words) - 1);   // select a random index    
$words[$index] = $myVar;               // replace the word at the random position
$myString = implode(' ', $words);      // merge the string back together from the words   

您也可以使用正则表达式执行此操作:

$idx = rand(0, str_word_count($myString) - 1);
$myString = preg_replace("/((?:\s*\w+){".$idx."})(?:\s*\w+)(.*)/", 
                         "\${1} $myVar\${2}", $myString);

这会向前跳过一个随机数字的单词并替换下一个单词。

您可以在行动here中看到此正则表达式。更改花括号内的数字会导致第一个捕获组消耗更多单词。

答案 1 :(得分:2)

您可以只计算单词分隔符的数量(本例中为空格)和用户rand来随机获取其中一个,然后只需strpos rand获取该单词的内容value offset(第三个参数)或者只是将字符串分解为数组(按空格),然后再替换implode(再次使用空格)替换随机字后的字符串。

答案 2 :(得分:2)

这是你需要的:

$myVar = 'bottle';
$myString = 'Hello this is my string';
$myStringArray = explode(' ', $myString);

$rand = mt_rand(0, count($myStringArray)-1);
$myStringArray[$rand] = $myVar;

$myNewString = implode(' ', $myStringArray);

答案 3 :(得分:2)

那怎么样:

$words = explode(' ', $myString );
$wordToChange = rand(0, count($words)-1);
$words[$wordToChange] = $myVar;
$final = implode(' ', $words)

答案 4 :(得分:1)

$myVar = "bottle";
$myString = 'Hello this is my string';

$words = explode(" ", $myString);
$words[rand(0, count($words)-1)] = $myVar;
echo join(" ", $words);