Avatar billede cmau Nybegynder
22. november 2007 - 20:20 Der er 8 kommentarer og
1 løsning

Finde klokkeslet i streng

Hej Eksperter

Hvordan kan jeg finde klokkeslette i følgende streng med php?
Thu, 22 Nov 2007 20:07:00 +0100

Det er 20:07:00 jeg gerne vil have fat i.

Jeg vil gerne have det med regex og hvis en gad forklare mig den streng de kommer frem til, så vil jeg blive super glad :)
Avatar billede nielle Nybegynder
22. november 2007 - 20:26 #1
Sådan?

$dinTekst = "Thu, 22 Nov 2007 20:07:00 +0100";

preg_match("/(\d{2}:\d{2}:\d{2})/", $dinTekst, $matches);
echo $matches[0];
Avatar billede nielle Nybegynder
22. november 2007 - 20:31 #2
preg_match("/\d{2}:\d{2}:\d{2}/", $dinTekst, $matches);
echo $matches[0];
Avatar billede cmau Nybegynder
22. november 2007 - 20:43 #3
Den virkede. Smid et svar.

men kan du forklare mig hvad de forskellige dele gør?
/(\d{2}:\d{2}:\d{2})/
Avatar billede nielle Nybegynder
22. november 2007 - 21:19 #4
\d - står for "digit" = "ciffer" på dansk. Denmatcger et af tegnene 0, 1, ... til 9. En anden måde at skrive det samme på er [0-9].

{2} - står for "præcis 2", og derfor er \d{2} det samme som "præcis to ciffre". Ander varianter af denne er:

{2,} = "2 eller flere"
{2,5} = "mellem 2 og 5"
{,5} = "maks 5"

Der er nogle genveje for de mest benyttede:

* = {0,} = "0 eller flere"
+ = {1,} = "1 eller flere"
? = {0,1} = "0 eller 1"

Men \d{2} betyder altså "præcis 2 cifre". Dermed betyder:

\d{2}:\d{2}:\d{2} - "2 ciffre, så et :, så 2 ciffre, så et :, og endeligt 2 ciffre"

Denne løsning forudsætter at timer, menutter og sekunder altid er angivet med 2 cifre. Heldigvis er det tilfældet her hvor der både er "07" minutter og "00" sekunder.
Avatar billede erikjacobsen Ekspert
22. november 2007 - 22:37 #5
Og den lavteknologiske løsning, helt uden { og } er
    preg_match("/\d\d:\d\d:\d\d/", $dinTekst, $matches);

;)
Avatar billede nielle Nybegynder
23. november 2007 - 07:00 #6
Nu ved jeg ikke lige om man skal kalde brugen af {2} for specielt højteknologisk. ;^)

Erik har dog ret, og jeg må tilstå at jeg mest sneg den ind for at fortælle lidt mere om regulære udtryk generelt end hvad man kunne slippe af med ellers. :^)
Avatar billede nielle Nybegynder
03. december 2007 - 18:59 #7
Så mangler du bare at accepere mit svar :^)
Avatar billede cmau Nybegynder
05. januar 2008 - 20:30 #8
TUsind tak :D
Avatar billede nielle Nybegynder
05. januar 2008 - 22:04 #9
Tak for point :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester