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

问题描述 投票:0回答:1

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

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

我想将所有汉字移动到字符串的末尾,并反转其当前顺序。因此,删除重复的英语单词并返回修改后的字符串

php oop preg-replace
1个回答
0
投票

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

<?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

© www.soinside.com 2019 - 2024. All rights reserved.