在PHP中随机化单词中间

前几天给我发送了一封电子邮件,其中包含一些文本,其中每个单词的开头和结尾字母都保留了下来,但每个单词的中间部分都是随机的。奇怪的是,文本仍然可读,这是由于大脑处理单词的方式所致。

我想知道是否可以使用PHP脚本来复制它。我需要做的就是将句子拆分为组成词,然后循环遍历这些词,使它们的中间位置随机化。显然,不可能在少于四个字符的单词中混合字母顺序,因此需要对此进行检查。这就是我的想法:

function mixWordMiddle($string)
{
 $string = explode(' ', $string);
 foreach ($string as $pos => $word) {
  $tmpArray = array();
  if (strlen($word) > 3) {
   $chars = preg_split('//',$word,-1,PREG_SPLIT_NO_EMPTY);
   for ($i = 1 ; $i < count($chars)-1 ; ++$i) {
    $tmpArray[] = $chars[$i];
    shuffle($tmpArray);
   }
   $string[$pos] = $chars[0] . implode($tmpArray) . $chars[count($chars)-1] . ' ';
  }
 }
 echo implode(' ', $string);
}

然后,我尝试插入以下有关进化的文字。

$string = 'In biology, evolution is the changes in the inherited traits of a population of organisms from one generation to the next. These changes are caused by a combination of three main processes: variation, reproduction, and selection.';

并提出了类似以下内容的内容。

In bliygoo, eoutivoln is the cganhes in the iethirned titras of a piaplouotn of oargnsims form one gneoeatirn to the nxte. Thsee cagnhes are ceusad by a cmibitoonan of there main persocses: voaitanri, rteunodpoirc, and stoneleic.

这实际上是很难阅读的。我认为这可能是因为我使用了一些带有太多长词的文本,所以我选择了另一个:

$string = 'A giant Saudi oil tanker seized by pirates in the Indian Ocean is nearing the coast of Somalia, the US Navy says.';

这产生了以下文本。

A ganit Suadi oil taeknr seezid by ptaiers in the Ianidn Oecan is nraneig the cosat of Smiolaa, the US Navy syas.

这只是一个测试脚本,因此不考虑任何标点符号。但是,它产生的文本仍然难以阅读,这使我对我收到的电子邮件的主张表示怀疑。