Wir haben eine Datenbank der kanadischen Adressen alle in CAPS, der Kunde verlangt, dass wir verwandeln Fall senken den ersten Buchstaben erwarten und den Brief nach einem ‚-‘ucwords und französisch akzentuierte lettres kodieren
Also habe ich diese Funktion , aber ich habe ein Problem mit französischen Akzentbuchstaben.
Wenn Sie die Datei und den Zeichensatz als ISO-88591 haben, funktioniert es gut, aber wenn ich versuche, es UTF-8 zu machen, funktioniert es nicht mehr.
Beispiel Eingabe: 'damien-claude élanger' Ausgang: Damien-Claude élanger
das é in utf-8 werden
function cap_letter($string) {
$lower = str_split("àáâçèéêë");
$caps = str_split("ÀÁÂÇÈÉÊË");
$letters = str_split(strtolower($string));
foreach($letters as $code => $letter) {
if($letter === '-' || $letter === ' ') {
$position = array_search($letters[$code+1],$lower);
if($position !== false) {
// test
echo $letters[$code+1] . ' == ' . $caps[$position] ;
$letters[$code+1] = $caps[$position];
}
else {
$letters[$code+1] = mb_strtoupper($letters[$code+1]);
}
}
}
//return ucwords(implode($letters)) ;
return implode($letters) ;
}
Die andere Lösung, die ich im Sinn haben, ist zu do: ucwords (strtolower ($ str)), da alle Adressen bereits in Großbuchstaben geschrieben sind, so dass die É auch nach der Anwendung von strtolower É bleibt.
Aber dann werde ich habe das Problem, É innerhalb ex aufweist: XXXÉXXÉ
'mb_strtoupper ("àáâçèéêë", 'UTF-8');' oder 'mb_strtolower' – Baba
insted perfekt funktioniert gut Ähnlich und genau so gut: [Wie kyrillische Zeichen groß geschrieben werden?] (Http://stackoverflow.com/q/10012445/367456) – hakre