- array_multisort: documentation ( source)
- preg_match_all: documentation ( source)
- implode: documentation ( source)
- str_split: documentation ( source)
<?php
$chars = '6Ata7~58jh&*(*HLy^)&a[yjJ>8]G8,$9<Y;B:%^';
preg_match_all('/([a-z])|([A-Z])|(\d)|(.)/', $chars, $m, PREG_SET_ORDER);
$array = str_split($chars);
array_multisort($m, $array);
echo implode($array);