kostenloser Webspace werbefrei: lima-city


Großbuchstabe nach Trennzeichen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    schuhsuche

    schuhsuche hat kostenlosen Webspace.

    Hallo

    ich habe Keywords, aber in manchen Wort-Kombinationen sind Trennzeichen,
    bei denen ist das zweiter Wort nur Kleinbuschstaben, soll aber groß beginnen.

    $string1 = 'Wort-kombination'; 
    $string2 = 'Schuh-sohle'; 
    $string3 = 'Stiefel/boots'; 
    $string4 = 'Wald/ wiese+wasser'; 
    $string5 = 'Tanz- & ballettschuhe';


    Wie kann ich nach jedem Trennzeichen
    /- :+&
    usw.
    das folgende Wort mit Großbuchstaben beginnen lassen ???

    mit ucfirst() wird ja nur er erste Buchstabe im String zu einem Großbuchstaben,
    ich möchte aber jedes einzelne Wort mit Großbuchstaben beginnen lassen, auch
    dann wennn das Wort nicht am Anfang steht, sondern nach einem Trennzeichen.



    Beitrag zuletzt geändert: 3.6.2013 8:14:58 von schuhsuche
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Meinst du es so?
    $text = <<< ETX
    klein wird groß.
    Wort-kombination
    Schuh-sohle
    Stiefel/boots
    Wald/ wiese+wasser
    Tanz- & ballettschuhe
    Aber natürlich gibts auch kleine Wörter
    ETX;
    
    $result = preg_replace_callback('|^[a-z]|', function($args) {
    	return strtoupper($args[0]);
    }, $text);
    
    $result = preg_replace_callback('|(\\s*[-/:+&]+\\s*)([a-z])|U', function($args) {
    	return $args[1] . strtoupper($args[2]);
    }, $result);
    
    echo($result);
  4. Autor dieses Themas

    schuhsuche

    schuhsuche hat kostenlosen Webspace.

    ja, genau so meine ich es,

    preg_replace_callback() ist ja ne tolle Sache :) ... dein Code funktioniert genau wie es soll :)

    ich hatte in der Zwischenzeit auch selber etwas versucht ...

    print "<br /><u>Vorher:</u>\n";
    print "<br />".nl2br($string)."\n"; 
    print "<br />\n"; 
    
    while ( preg_match("/[.\/+\-&: ]([a-z].*)/", $string, $treffer) ) { 
    	
    ## 	$upstr = ucwords($treffer[1]); 
    	$upstr = ucfirst($treffer[1]); 
    	
    	$string = str_replace($treffer[1], $upstr, $string); 
    
    }
    
    print "<br /><u>Nachher:</u>\n";
    print "<br />".nl2br($string)."\n"; 
    print "<br />\n";



    aber damit beginnt - bis auf das erste Wort - jedes einzelne Wort mit Großbuchstaben
    ... das is etwas zu Viel des "Guten" .... :)


    Vorher:
    klein wird groß.
    Wort-kombination
    Schuh-sohle
    Stiefel/boots
    Wald/ wiese+wasser
    Tanz- & ballettschuhe
    Aber natürlich gibts auch kleine Wörter

    Nachher:
    klein Wird Groß.
    Wort-Kombination
    Schuh-Sohle
    Stiefel/Boots
    Wald/ Wiese+Wasser
    Tanz- & Ballettschuhe
    Aber Natürlich Gibts Auch Kleine Wörter




    da sind Deine zwei preg_replace_callback() deutlich besser :)

    Danke !!! <3 :thumb:

    PS: Frage ... warum funktioniert das ohne Modifier 's' im Pattern,
    obwohl der String doch über mehrere Zeilen geht (Zeilenumbrüche) ?!

  5. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    schuhsuche schrieb:
    PS: Frage ... warum funktioniert das ohne Modifier 's' im Pattern,
    obwohl der String doch über mehrere Zeilen geht (Zeilenumbrüche) ?!
    Den Modifier brauchst du nur dann, wenn ein Match über mehrere Zeilen funktionieren soll. Da hier ein Match aber ein Wort ist, welches sicher nicht über mehrere Zeilen »verteilt« sein kann, brauchst du den Modifier auch nicht.
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!