Einzelnen Beitrag anzeigen
  #8 (permalink)  
Alt 25-01-2015, 00:24
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Zitat von SusiSorglos Beitrag anzeigen
Ich habe es vorhin mal probiert, dabei bin ich folgendermaßen vorgegangen
PHP-Code:
function sentence_case($string) {
    
$sentences preg_split('/([ ]+)/'$string, -1PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
    
$new_string '';

    
$klein = array("DER""DIE""DAS""UND""IN");
    
$gross = array("THC""OCB""OK""MFG");

    foreach (
$sentences as $key => $sentence) {
        if (
in_array($klein$sentence)) {
            
$new_string .= strtolower(trim($sentence)); 
        }
        elseif (
in_array($gross$sentence)) {
            
$new_string .= strtolower(trim($sentence)); 
        }
        else {
            
$new_string .= ucfirst(strtolower(trim($sentence))); 
        }
    }
    return 
trim($new_string);
}

echo 
sentence_case("OCB DER DIE BLAUES THC IN KÖLN"); 
Soweit ich das verstehe ist $sentences ein ARRAY. $sentence wird durch die foreach-Schleife zu einem String.
Nun kann ich aber mit in_array nur Array's miteinander vergleichen.

Also hier liegt erst einmal mein Problem. Oder sollte ich doch besser preg_replace nutzen und den ganzen foreach Kram weg lassen!?
Du hast die Parameter von in_array() vertauscht.
Und zu großzügig mit trim()
Bei in_array($gross, $sentence) möchtest du upper, nicht lower
Ansonsten tuts das doch ...
__________________
Wir werden alle sterben
Mit Zitat antworten