我知道标题与其他问题相似,但我找不到我想要的内容。
我有一个变量,比如说:
$myVar = 'bottle';
然后我有一个字符串:
$myString = 'Hello this is my string';
我需要一些代码来选择$myString
的随机词,并将其替换为$myVar
。我怎么能这样做?
答案 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);