如何将字符串中的汉字移动到字符串末尾?

时间:2019-12-23 16:08:05

标签: php oop preg-replace

我现在有一个像这样的字符串:我想在PHP中执行以下操作:

$string = 'Testing giving dancing 喝 喝 passing 制图 giving 跑步 吃';

我想将所有汉字移动到字符串的末尾,并且还要颠倒它们的当前顺序。因此,删除重复的英语单词并返回修改后的字符串

1 个答案:

答案 0 :(得分:1)

您在这里!检查代码中的注释:

<?php

$string = 'Testing giving dancing 喝 喝 passing 制图 giving 跑步 吃';

// split by a space into an array
$explosion = explode(' ', $string);

$normalWords = [];
$chineseWords = [];

// loop through the array
foreach ($explosion as $debris) {

   // if not normal alphabet characters
   if (!preg_match('#[a-zA-Z]+#', $debris) && !in_array($debris, $chineseWords)) {
       // add to chinese words array if not already in the array
      $chineseWords[] = $debris;
   } elseif (preg_match('#[a-zA-Z]+#', $debris) && !in_array($debris, $normalWords)) {
        // add to normal words array if not already in the array
       $normalWords[] = $debris;
   }
}

// reverse the chinese characters like you wanted
$chineseWords = array_reverse($chineseWords);

// Piece it all back together
$string = implode(' ', $normalWords) . ' ' . implode(' ', $chineseWords);

// and output
echo $string;  // Testing giving dancing passing 吃 跑步 制图 喝

在这里看到它! https://3v4l.org/FWQWG