Liebe(r) Silja,
ich habe das für mich so gelöst:
function normalize_utf8_to_lower_case ($s) {
// replacements for lower-case ASCII-characters
$r = array(
'a' => 'AaÀÁÂÃÅàáâãåĀāĂ㥹ǍǎǺǻẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặΆ',
'ae' => 'ÄäæÆǼǽ',
'b' => 'bB',
'c' => 'CcÇçĆćĈĉĊċČč',
'd' => 'DdÐĎďĐđ',
'e' => 'EeÈÉÊËèéêëĒēĔĕĖėĘęĚěẸẹẺẻẼẽẾếỀềỂểỄễỆệΈ',
'f' => 'Ffƒ',
'g' => 'GgĜĝĞğĠġĢģ',
'h' => 'HhĤĥĦħΉ',
'i' => 'IiÌÍÎÏìíîïĨĩĪīĬĭĮįİıǏǐỈỉỊịΊΐ',
'ij' => 'IJij',
'j' => 'JjĴĵ',
'k' => 'KkĶķĸ',
'l' => 'LlĹĺĻļĽľĿŀŁł',
'm' => 'Mm',
'n' => 'NnÑñŃńŅņŇňʼn',
'ng' => 'Ŋŋ',
'o' => 'OoÒÓÔÕØòóôõøŌōŎŏŐőƠơǑǒǾǿΌỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợ',
'oe' => 'ÖöŒœ',
'p' => 'Pp',
'q' => 'Qq',
'r' => 'RrŔŕŖŗŘř',
's' => 'SsŚśŜŝŞşŠš',
'ss' => 'ßß',
't' => 'TtŢţŤťŦŧ',
'u' => 'UuÙÚÛŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜùúûỤụỦủỨứỪừỬửỮữỰự',
'ue' => 'Üü',
'v' => 'Vv',
'w' => 'WwŴŵẀẁẂẃẄẅ',
'x' => 'Xx',
'y' => 'YyÝýÿŶŷŸΎỲỳỴỵỶỷỸỹ',
'z' => 'ZzŹźŻżŽž'
);
// replace
foreach ($r as $c => $variants) {
$s = preg_replace("~[$variants]~su", $c, $s);
}
return $s;
}
function sort_callback ($a, $b) {
return strnatcasecmp(
normalize_utf8_to_lower_case($a),
normalize_utf8_to_lower_case($b)
);
}
Ist sicherlich nicht perfekt, sollte aber dieses DIN 5007-2 einigermaßen erreichen.
Liebe Grüße,
Felix Riesterer.
--
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)