/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Ændre streng
Fra : Lasse Hedegaard


Dato : 04-10-04 00:09

Jeg har en streng, hvor der muligvis er et eller flere bogstaver,
efterfulgt af et tal, som igen muligvis efterfulgt af et eller flere
bogstaver. Alle bogstaverne er små, men jeg ønsker at lave alle
bogstaverne FØR tallet om til store bogstaver.

Eksempler:

123 -> 123
abc123 -> ABC123
123abc -> 123abc
abc123abc -> ABC123abc

Hvordan klares dette lettest? Jeg brugte i første omgang blot ucfirst,
men nu støder jeg på flere bogstaver før cifrene.

Venligst,
Lasse Hedegaard

--
http://www.simlock.dk/ - låsesmeden til din simlock!

Ring gratis fra din fastnet-telefon: http://www.simlock.dk/link/uvtc/

 
 
Peter Brodersen (04-10-2004)
Kommentar
Fra : Peter Brodersen


Dato : 04-10-04 00:29

On Mon, 04 Oct 2004 01:09:04 +0200, Lasse Hedegaard <laxxe@nospam.dk>
wrote:

>Hvordan klares dette lettest? Jeg brugte i første omgang blot ucfirst,
>men nu støder jeg på flere bogstaver før cifrene.

$string = preg_replace('_^[a-z]+_e','strtoupper("$0")',$string);

--
- Peter Brodersen

Ugens sprogtip: professionel (og ikke proffessionel)

Lasse Hedegaard (04-10-2004)
Kommentar
Fra : Lasse Hedegaard


Dato : 04-10-04 00:35

On Mon, 04 Oct 2004 01:29:19 +0200, Peter Brodersen <usenet@ter.dk>
wrote:

>$string = preg_replace('_^[a-z]+_e','strtoupper("$0")',$string);

Som altid er du en guttermand, Peter

Regular expressions bliver aldrig min kop te, men hvis du har tid - må
du meget gerne forklare hvad din magiske linie gør - så kan jeg da
forhåbentlig blive lidt klogere...

Venligst,
Lasse Hedegaard

--
http://www.simlock.dk/ - låsesmeden til din simlock!

Ring gratis fra din fastnet-telefon: http://www.simlock.dk/link/uvtc/

Peter Brodersen (04-10-2004)
Kommentar
Fra : Peter Brodersen


Dato : 04-10-04 00:48

On Mon, 04 Oct 2004 01:34:50 +0200, Lasse Hedegaard <laxxe@nospam.dk>
wrote:

>$string = preg_replace('_^[a-z]+_e','strtoupper("$0")',$string);
>
>Som altid er du en guttermand, Peter
>
>Regular expressions bliver aldrig min kop te, men hvis du har tid - må
>du meget gerne forklare hvad din magiske linie gør - så kan jeg da
>forhåbentlig blive lidt klogere...

Første argument er hvad, der skal matches.

Første argument er: _^[a-z]+_e
Selve udtrykket er: ^[a-z]+
Dvs. fra starten af strengen skal der matches ét til flere tegn blandt
a-z.

Til udtrykket bruger vi e-flaget:
http://dk.php.net/manual/en/reference.pcre.pattern.modifiers.php
Det betyder, at vi eval()'er andet argument. På den måde kan vi køre
en funktion på det matchede.

Andet argument, strtoupper("$0") skulle være til at forstå. $0 er alt,
der bliver matchet i stringen. Det er velkendt fra når man sætter
parenteser, og matcher dele af udtrykket.

En caveat er, at udtrykket ikke matcher store bogstaver, men det er
let at få den til at medtage det. Det kunne være relevant, hvis
string'en kan være "abCd123abc" - her vil kun ab blive matchet i
øjeblikket. Enten kan vi prøve at matche [a-zA-Z]+ (eller tilføje
i-flaget for at gøre søgningen case-insensitive), eller måske endnu
bedre, [^0-9]+, hvis vi bare vil matche så langt så muligt, indtil vi
evt. møder et tal.
--
- Peter Brodersen

Ugens sprogtip: så længe (og ikke sålænge)

Søg
Reklame
Statistik
Spørgsmål : 177517
Tips : 31968
Nyheder : 719565
Indlæg : 6408636
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste