Подтвердить что ты не робот

PHP: как сортировать символы в строке?

У меня есть набор строк, содержащих символы в PHP script, мне нужно отсортировать эти символы в каждой строке.

Например:

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

Эти символы не имеют акцентов и все строчные буквы. Как я могу выполнить это в PHP?

4b9b3361

Ответ 1

Я бы сделал массив и использовал функцию сортировки:

$string = 'bac';

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

Ответ 2

При использовании сортировки он должен быть строчным. У меня были строки с верхним регистром, вызывающие много проблем на моем чрезвычайно строгом тяжелом сайте с asort() и sort(), не зная об этом;). Я использую следующую функцию для быстрого script. Обратите внимание на "strtolower" для функции allChars. Затем вы можете манипулировать тем, что вам нужно, в нижнем регистре. Или другое строковое упорядочение, которое обрабатывает верхний регистр и нижний регистр, natcasesort(). Natcasesort, который обрабатывает надлежащий (естественный) порядок - так, как мы будем заказывать вещи на бумаге. Вы можете предоставить массив и использовать foreach для разделения каждого слова. Или, используйте это база для создания функции, которая обрабатывает массивы. Вы можете использовать implode ('', $letters) вместо инструкции foreach, но эта функция позволяет вам изменять буквы, если вам нужно - просто сделать это внутри foreach. Также добавлены функции implode в том случае, если кто-то предпочитает их.

Только нижний регистр

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

Только нижний регистр с Implode

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;
}

Естественное упорядочение с помощью Implode

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

Это быстро и просто.

Ответ 3

function sort_alphabet($str) {
    $array = array();
    for($i = 0; $i < strlen($str); $i++) {
        $array[] = $str{$i};
    }
    // alternatively $array = str_split($str);
    // forgot about this

    sort($array);
    return implode('', $array);
}

Ответ 4

Вы можете разбить строку на массив и затем использовать любую из функций сортировки.

$in = "this is a test";
$chars = str_split($in);
sort($chars);
$out = implode($chars);