PHP:如何对字符串中的字符进行排序?

2022-08-30 16:27:47

我有一组字符串,其中包含PHP脚本中的字符,我需要对每个字符串中的这些字符进行排序。

例如:

"bac" -> "abc"
"abc" -> "abc"
"" -> ""
"poeh" -> "ehop"

这些字符没有重音符号,并且都是小写的。如何在PHP中执行此操作?


答案 1

我会把它变成一个数组,并使用排序函数:

$string = 'bac';

$stringParts = str_split($string);
sort($stringParts);
echo implode($stringParts); // abc

答案 2

使用排序时,它必须是小写文本。我有大写的字符串导致许多问题在我非常字符串繁重的网站上与asort()和sort()不知道这个;)。我使用以下函数作为快速脚本。请注意 allChars 函数的“strtolower”。然后,您可以稍后使用小写字母进行操作。或者,另一个处理大写和小写的字符串排序是 natcasesort()。。Natcasesort,它处理正确(自然)排序 - 就像我们在纸上订购东西一样。你可以提供一个数组,并使用 foreach 分隔每个单词。或者,将此作为创建处理数组的函数的基础。您可以使用 implode('',$letters) 而不是 foreach 语句 - 但此函数允许您在需要时更改字母 - 只需在 foreach 内执行此操作即可。还添加了内爆功能,以防有人喜欢这些功能。

仅小写

function allChars($w){
    $letters = str_split(strtolower($w)); sort($letters);
    $ret = "";
    foreach($letters as $letter){
        $ret .= $letter;
    }
    return $ret;
}

仅小写,带内爆

function implodeAllChars($w){
    $letters = str_split(strtolower($w)); sort($letters);
    return implode($letters);
}

自然排序功能

function allCharsNat($w){
    $letters = str_split($w); natcasesort($letters);
    $ret = "";
    foreach($letters as $letter){
        $ret .= $letter;
    }
    return $ret;
}

自然排序与内爆

function allCharsNatImplode($w){
    $letters = str_split($w); natcasesort($letters);
    return implode($letters);
}

它既快速又简单。


推荐