![]() |
SELFHTML Forumsarchiv |
|
|
Die folgende Nachricht zum Thema stammt von: depp, 29. 04. 2005, 18:11
moin
wie bekomm ich es gebacken, dass durch preg_replace jeweils der anfangsbuchstabe großgeschrieben wird, wenn dieser entweder der erste buchstabe des strings ist, oder einem trennzeichen nachfolgt. z.b. - _ / & usw...
danke für hilfe
Die folgende Nachricht zum Thema stammt von: Dennis, 29. 04. 2005, 18:19
Hi depp,
»» wie bekomm ich es gebacken, dass durch preg_replace jeweils der anfangsbuchstabe großgeschrieben wird, wenn dieser entweder der erste buchstabe des strings ist, oder einem trennzeichen nachfolgt. z.b. - _ / & usw...
Zum Umwandeln des Buchstaben in einen Großbuchstaben nutzt du die Funktion strtoupper(), damit du diese im zweiten Parameter von preg_replace nutzen kannst, musst du den Modifier e benutzen.
Theoretisch müsste das so in etwa gehen, habe es allerdings nicht getestet:preg_replace("/([\-_\/ ][a-z])/e", "strtoupper($1)", $string);
MfG, Dennis.
--
Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
Auf viele Fragen weiß auch Wikipedia eine Antwort.
Die folgende Nachricht zum Thema stammt von: Candid Dauth, 29. 04. 2005, 18:33
Heißa, Dennis,
»» »» wenn dieser entweder der erste buchstabe des strings ist, oder einem trennzeichen nachfolgt. z.b. - _ / & usw...
»» preg_replace("/([\-_\/ ][a-z])/e", "strtoupper($1)", $string);
Du hast den Anfang vergessen:preg_replace('/([-_\\/ ]|^)([a-z])/ei', 'strtoupper(\'$1\')', $string;
Außerdem habe ich bei strtoupper die Anführungszeichen hinzugefügt, da er sonst afaik den Inhalt der Variable auszurühren versucht. Zumindest hatte ich neulich ein ähnliches Problem.
Den Backslash vor dem - habe ich auch weggemacht. Ich bin mir nicht sicher, ob das mit dem überhaupt funktioniert. Jedenfalls baut man einen Bindestrich in eckige Klammern ein, indem man ihn gleich an den Anfang schreibt. (Ich hoffe, ich habe da jetzt nicht etwas verwechselt)
Caramba!
Grüße aus Biberach Riss,
Candid Dauth (ehemals Dogfish)
--
„Versuche niemals, dein Ansehen auf Kosten der Vernunft zu steigern.“ | Mein SelfCode
http://cdauth.de/
Die folgende Nachricht zum Thema stammt von: Dennis, 29. 04. 2005, 18:45
Hi Candid,
»» Du hast den Anfang vergessen.
Stimmt, du hast Recht - wenn wir jetzt schon aber dabei sind, dann hast du auch den "Anfang" vergessen ;-)$string = preg_replace('/([-_\\/ ]|^)([a-z])/ei', 'strtoupper(\'$1\')', $string);
»» Außerdem habe ich bei strtoupper die Anführungszeichen hinzugefügt, da er sonst afaik den Inhalt der Variable auszurühren versucht.
Ich habe es dann jetzt doch gerade mal getestet - meine Version ohne Anfz. ergab:
Warning: Wrong parameter count for strtoupper()
Deine ist aber auch nicht das Wahre - bei einem String
$string = "es war einmal ein schöner tag";
wird lediglich ausgegeben:
s ar inmal in chöner ag
Du lässt nämlich $2 vollkommen wegfallen ;-)
Richtig wäre also:$string = preg_replace('/([-_\\/ ]|^)([a-z])/ei', 'strtoupper(\'$1$2\')', $string);
»» Den Backslash vor dem - habe ich auch weggemacht. Ich bin mir nicht sicher, ob das mit dem überhaupt funktioniert. Jedenfalls baut man einen Bindestrich in eckige Klammern ein, indem man ihn gleich an den Anfang schreibt. (Ich hoffe, ich habe da jetzt nicht etwas verwechselt)
Auch das habe ich gerade nochmal getestet:$string = "es war einmal ein schöner tag -a";
$zeichenklasse = "[\-_\\/ ]";
//Ausgabe: Es War Einmal Ein Schöner Tag -A
$zeichenklasse = "[_\\/ \-]";
//Ausgabe: Es War Einmal Ein Schöner Tag -A
Funktioniert also beides ;-)
MfG, Dennis.
--
Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
Das Leben ist kein Warenhaus - es nimmt nichts zurück. (Anette Louisan)
Die folgende Nachricht zum Thema stammt von: depp, 29. 04. 2005, 18:47
:-)
so klappts.
DANKE euch allen!
Die folgende Nachricht zum Thema stammt von: Candid Dauth, 29. 04. 2005, 18:55
Heißa, Dennis,
»» Du lässt nämlich $2 vollkommen wegfallen ;-)
Stimmt. Am Anfang des Schreibens des Postings habe ich das noch bedacht, aber währenddessen habe ich wohl vergessen, fertigzudenken. ;-)
»» $string = preg_replace('/([-_\\/ ]|^)([a-z])/ei', 'strtoupper(\'$1$2\')', $string);
Warum schließt du $1 in strtoupper ein?
Ich würde vorschlagen:$string = preg_replace('/([-_\\/ ]|^)([a-z])/ei', '\'$1\'.strtoupper(\'$2\')', $string);
Wenn das so weiter geht, müssen wir irgendwann einen Artikel drüber schreiben… ;-)
Caramba!
Grüße aus Biberach Riss,
Candid Dauth (ehemals Dogfish)
--
„Erwecke niemals bei jemandem dem Eindruck, dass er etwas anders machen solle, weil er es anders macht als du, wenn er es besser macht als du.“ | Mein SelfCode
http://cdauth.de/
Die folgende Nachricht zum Thema stammt von: Dennis, 29. 04. 2005, 19:05
Hi Candid,
»» »» $string = preg_replace('/([-_\\/ ]|^)([a-z])/ei', 'strtoupper(\'$1$2\')', $string);
»»
»» Warum schließt du $1 in strtoupper ein?
*gähn* Soll ich dich jetzt noch mal ganz frech bitten, das was du geschrieben hast noch mal zu überdenken? ;-)$string = "hallo candid, geht das? ja/nein";
echo $string;
$string = preg_replace('/([_\\/ \-]|^)([a-z])/ei', 'strtoupper(\'$2\')', $string);
echo $string;
/* Ausgabe:
hallo candid, geht das? ja/nein
HalloCandid,GehtDas?JaNein
*/
MfG, Dennis.
--
Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
That's life - Es gibt im Leben[tm] keine Zurück-Taste. (Fabian Transchel)
Die folgende Nachricht zum Thema stammt von: Candid Dauth, 30. 04. 2005, 00:14
Heißa, Dennis,
»» *gähn* Soll ich dich jetzt noch mal ganz frech bitten, das was du geschrieben hast noch mal zu überdenken? ;-)
»»
»» $string = preg_replace('/([_\\/ \-]|^)([a-z])/ei', 'strtoupper(\'$2\')', $string);
Das habe ich nicht geschrieben. Zumindest nicht in dem Posting, auf das du geantwortet hast. :P
Ich habe $1 aus strtoupper herausgenommen, da es nur zusätzliche Rechenleistung verbraucht, das Trennzeichen (welches nicht aus Buchstaben besteht) in Großbuchstaben umzuwandeln. Zwar ist jene Leistung minimal, aber wir wollen ja global denken… ;-)
Deswegen steht in meinem (letzten) Code $1 außerhalb von strtoupper.
Caramba!
Grüße aus Biberach Riss,
Candid Dauth (ehemals Dogfish)
--
„Jemanden zu lieben bedeutet, ihn nicht zu erdrücken, auch wenn man es gerne wollte – aus Liebe.“ | Mein SelfCode
http://cdauth.de/
Die folgende Nachricht zum Thema stammt von: Dennis, 30. 04. 2005, 08:15
Hi Candid,
»» Deswegen steht in meinem (letzten) Code $1 außerhalb von strtoupper.
Hab ich wohl übersehen - Peinlich! ;-)
MfG, Dennis.
--
Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
Wissen ist gut, Können ist besser, aber das Beste und Interessanteste ist der Weg dahin! (Detlef G.)
Die folgende Nachricht zum Thema stammt von: depp, 29. 04. 2005, 18:45
moin
erstmal danke. aber leider gehts noch nicht so ganz...
$string="abc def ghi";
...('/([-_\\/ ]|^)([a-z])/ei', 'strtoupper(\'$1\')', ...
=>bc ef hi
also nun sind die buchstaben ganz weg. so kann man seine probleme quasi beseitigen... das ist die notlösung ;-)
was stimmt noch nicht dran?
danke
Die folgende Nachricht zum Thema stammt von: Dennis, 29. 04. 2005, 18:47
Hi depp,
»» also nun sind die buchstaben ganz weg. so kann man seine probleme quasi beseitigen... das ist die notlösung ;-)
LOL - tja, das ist doch mal wirklich „produktiv” ;-)
»» was stimmt noch nicht dran?
Da muss ich wohl ein paar Millisekunden schneller gewesen sein als du, guckst du hier.
MfG, Dennis.
--
Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
Die Definition des SelfCodes ist hier zu finden, es gibt auch einen Encoder.
© 1998-2006
Impressum, Software: Classic Forum