Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 18.05.2009, 20:09
Benutzerbild von netspy
netspy netspy ist offline
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 13.08.2004
Ort: Leipzig
Beiträge: 1.953
netspy sorgt für eine eindrucksvolle Atmosphärenetspy sorgt für eine eindrucksvolle Atmosphäre
Standard strcoll und setlocale unter Mac OS X

Ich sitze gerade an einem blödem Problem und weiß nicht, ob es ein Bug in PHP ist oder ob ich mich nur zu dumm anstelle. Normalerweise sollte man mit strcoll() zwei Strings in Abhängigkeit der eingestellten Locale vergleichen können. Folgendes UTF-8-kodiertes Testscript dafür:
PHP-Code:
<?php

if (defined('PHP_OS')) {
    if (
stristr(PHP_OS'darwin')) {
        
$locale 'de_DE.UTF-8';
    } elseif (
stristr(PHP_OS'win')) {
        
$locale 'German_Germany.65001';
    } else {
        
$locale 'de_DE.UTF8';
    }
} else {
    
$locale 'de_DE.UTF8';
}

$string "abcdefghijklmnopqrstuvwxyzäöüß";

$array = array();

for (
$i=0$i<mb_strlen($string'UTF-8'); $i++) {
    
$array[]=mb_substr($string$i1'UTF-8');
}

$oldLocale setlocale(LC_COLLATE"0");

print(
"\nAlt: $oldLocale Neu: ");
print(
setlocale(LC_COLLATE$locale));
usort($array'strcoll');
setlocale(LC_COLLATE$oldLocale);
print(
"\n" implode(''$array) . "\n");

?>
Auf meinem Webserver (Linux, PHP 5.2.6) liefert mir das auch wie erwartet folgende Ausgabe:
Code:
Alt: C Neu: de_DE.UTF8
aäbcdefghijklmnoöpqrsßtuüvwxyz
Die Umlaute sind also richtig einsortiert. Auf meinen Entwicklungsrechner (Mac OS X, PHP 5.2. sieht das Ergebnis dagegen so aus:
Code:
Alt: C Neu: de_DE.UTF-8
abcdefghijklmnopqrstuvwxyzßäöü
Die Umlaute sind hinten angehangen und nicht richtig einsortiert.

Grundsätzlich wäre es ja nicht so das Problem, da es ja auf dem Webserver richtig läuft. Da ich aber verschiedene größere Datenmengen lokal konvertieren will, brauche ich eine Lösung für meinen Mac.

Hat irgendjemand eine Idee, warum strcoll hier auf dem Mac versagt?

Mario
__________________
AppDev Blog · AppDev Forum
Mit Zitat antworten
Sponsored Links