Großbuchstabe nach Trennzeichen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
beginnen
boot
code
einzelne wort
frage
kombination
match
schuh
sohle
stiefel
string
tanz
treffer
url
wald
wasser
wiese
wort
zeile
zweiter wort
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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);
-
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
PS: Frage ... warum funktioniert das ohne Modifier 's' im Pattern,
obwohl der String doch über mehrere Zeilen geht (Zeilenumbrüche) ?!
-
schuhsuche schrieb:
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.
PS: Frage ... warum funktioniert das ohne Modifier 's' im Pattern,
obwohl der String doch über mehrere Zeilen geht (Zeilenumbrüche) ?! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage