Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2005 Teil von April

SELFHTML Forumsarchiv
RegExp.: erster Buchstabe groß

Informationsseite
  1. Seite (PHP) RegExp.: erster Buchstabe groß von depp, 29. 04. 2005, 18:11
nach unten

RegExp.: erster Buchstabe groß

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

nach obennach unten

RegExp.: erster Buchstabe groß

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.

nach obennach unten

RegExp.: erster Buchstabe groß

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/

nach obennach unten

RegExp.: erster Buchstabe groß

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)

nach obennach unten

RegExp.: erster Buchstabe groß

Die folgende Nachricht zum Thema stammt von: depp, 29. 04. 2005, 18:47

:-)
so klappts.
DANKE euch allen!

nach obennach unten

RegExp.: erster Buchstabe groß

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/

nach obennach unten

RegExp.: erster Buchstabe groß

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)

nach obennach unten

RegExp.: erster Buchstabe groß

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/

nach obennach unten

RegExp.: erster Buchstabe groß

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.)

nach obennach unten

RegExp.: erster Buchstabe groß

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

nach obennach unten

RegExp.: erster Buchstabe groß

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.

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2005 Teil von April

© 1998-2006 Seite Impressum, Software: Classic Forum