Avatar billede ohmish Nybegynder
15. maj 2003 - 00:17 Der er 31 kommentarer og
2 løsninger

Eregi(): udtag flere ord fra linie med andre ord.

Jeg skal åbenbart til at sætte mig i det nyttige begreb regulære udtryk... men det blir ikke lige nu :(

Jeg har denne tekst (det eneste der er fast er "Date: " og linien nedenunder):

Date: Sun, 28 Nov 1999 08:56:27 -0800 ===============================================

Jeg skal bruge "Sun, 28 Nov 1999" som værdi.
Hvordan gør jeg? forklar meget gerne hvordan funktionen virker.
Avatar billede Slettet bruger
15. maj 2003 - 00:26 #1
Kan nedenstående have andre rækkefølger?
"Sun, 28 Nov 1999 08:56:27 -0800"
Avatar billede ohmish Nybegynder
15. maj 2003 - 00:32 #2
(e)regin, vel mødt :)

nej.
men -0800 kan være andet. f.eks -0200.
Avatar billede erikjacobsen Ekspert
15. maj 2003 - 00:35 #3
if (preg_match('/^Date: (\w+, \d+ \w+ \d+)/i',$line,$r)) {
  print $r[1];
}
// utestet
Avatar billede ohmish Nybegynder
15. maj 2003 - 00:44 #4
eric> hvorfor if... hva hvis kriteriet ikke opfyldes?
du må meeeeget gerne forklare lidt, hvis du gider.
Avatar billede erikjacobsen Ekspert
15. maj 2003 - 00:46 #5
Du kan sikkert selv løbe alle linier igennem, hvis der er flere
i filen - jeg antager det er dit scenarie.

Hvis du så kigger på hver linie, $line, så er der nogen,
der passer, og nogen der ikke passer.

Men hvis du ikke vil kigge på det linie for linie, så kan
vi også klare det. Blot vi ved hvor dine data kommer fra.
Avatar billede ohmish Nybegynder
15. maj 2003 - 00:54 #6
problemstillingen her er en lille del af et større script, hvor denne skal bruges hvis datoen ikke kunne udtrækkes på andre måder.
Så formatet er kun som her faktisk.

Jeg kigger en txtfil med 600 foreach stykker igennem.
Ku' være rart med noget der ikke presser citronen.
men ellers ligegyldigt.. jeg er på egen server. Men nyttigt generelt, med et kvikt script.
Avatar billede erikjacobsen Ekspert
15. maj 2003 - 00:56 #7
"txtfil med 600 foreach"  - den forstår jeg ikke...
Avatar billede ohmish Nybegynder
15. maj 2003 - 01:03 #8
det er en masse mails jeg har exporteret til én stor fil, og opdelt med | derefter udskrevet hver enkelt mail med foreach.

Opbygningen af hver mail har skiftet lidt med tiderne. Dét format jeg mangler at hive datoen ud af ser ca. sådan her ud:

|
================================================
Subject: Nyt medlem!

Date: Sun, 28 Nov 1999 08:56:27 -0800
================================================

Navn: xxx xxx Olsen
Gade: xxxxxsgade 23, 2. tv.
Postnr: 2200
By: København N.
E-mail: xxxx@xx.dk
Alder: 34
Instrument: Guitar / Keyboard
Stilart: Pop/rock/new age
Reference: surf

Men eftersom datoen står ret tidligt i mailen, kan jeg vel sagtens bruge din "gennemløber"?
Avatar billede ohmish Nybegynder
15. maj 2003 - 01:08 #9
jeg får den ikke til at virke som den skal desværre. skal det være print $r[1] og ikke echo $r[1] ?
Avatar billede Slettet bruger
15. maj 2003 - 01:11 #10
if (preg_match('/Date: (\w+, \d+ \w+ \d+)/i',$line,$r)) {
  print_r( $r);
}
Så tror jeg erics forslag virker...
Avatar billede Slettet bruger
15. maj 2003 - 01:11 #11
eriks... even!
Avatar billede ohmish Nybegynder
15. maj 2003 - 01:15 #12
skal det være med "print?
Avatar billede ohmish Nybegynder
15. maj 2003 - 01:16 #13
Jæsss. det virker fint nu :)
Avatar billede ohmish Nybegynder
15. maj 2003 - 01:18 #14
nu har jeg kun rodet med det her i 4 døgn... puuha.

er der nogen der kan forklare hvad der sker i funktionen? en lidt anderledes variant..
Avatar billede Slettet bruger
15. maj 2003 - 01:21 #15
\w svarer til [A-Za-z0-9_]
\d svarer til [0-9]

Så siger resten sikkert sig selv....
Avatar billede ohmish Nybegynder
15. maj 2003 - 01:26 #16
smart. en ny ting i php?
Avatar billede Slettet bruger
15. maj 2003 - 01:27 #17
Nope... en del af regexp's!
Avatar billede ohmish Nybegynder
15. maj 2003 - 01:28 #18
hehe jeg har mange spørgsmål...

Hvord fortælles der "klip det sidste væk"?
Avatar billede Slettet bruger
15. maj 2003 - 01:29 #19
parentesen fortæller: "klip det her ud"...
Avatar billede ohmish Nybegynder
15. maj 2003 - 01:30 #20
og ka vi lige få nogen svar på banen! Erik du må da tage imod lidt point en gang imellem :)
Avatar billede Slettet bruger
15. maj 2003 - 01:31 #21
Erik SKAL!!! :P For jeg ligger ikke et svar... BASTA.
Avatar billede ohmish Nybegynder
15. maj 2003 - 01:32 #22
hmm..

Sun, = \w
28 = \d
Nov = \w
1999 = \d

og resten nævnes ikke, så det kommer ikke med?
08:56:27 -0800
Avatar billede Slettet bruger
15. maj 2003 - 01:33 #23
nemlig!
Avatar billede ohmish Nybegynder
15. maj 2003 - 01:33 #24
jo. du får lidt for udpenslingen. BASTA.
Avatar billede ohmish Nybegynder
15. maj 2003 - 01:35 #25
vil det sige at et mellemrum opfattes som en karakter... altså et ikke-tal?
ellers ville det første af tiden jo komme med (08).
Avatar billede Slettet bruger
15. maj 2003 - 01:36 #26
yep
Avatar billede ohmish Nybegynder
15. maj 2003 - 01:43 #27
lækkert. uden frygt for at sovse indlægget til med spørgsmål, vil jeg afslutte med:

Har du/I et par links til sider hvor man kan lære lidt om regex?
Avatar billede Slettet bruger
15. maj 2003 - 01:45 #28
Nope... sidder selv med referencen til JavaScript... det vigtigste er bare at finde en liste med forklaring til alle de forskellige tegn og så få noget erfaring.
Avatar billede ohmish Nybegynder
15. maj 2003 - 01:50 #29
ok. men tak for hjælpen :)

Hvis du støder på Erik, så sig at han skylder et svar!
Avatar billede Slettet bruger
15. maj 2003 - 01:51 #30
Det gør jeg og det skal jeg nok...
Avatar billede erikjacobsen Ekspert
15. maj 2003 - 11:29 #31
Vi kan ikke allesammen sidde oppe den halve nat ...:) Men, ok, hvis du
kunne bruge den stump regexp jeg fik stríkket sammen, og den virker, så
må du da godt give mig et point eller 2
Avatar billede ohmish Nybegynder
15. maj 2003 - 13:29 #32
jeps, den er brugbar i mange situationer! læg et svar :)
Avatar billede erikjacobsen Ekspert
15. maj 2003 - 13:34 #33
Ah, det er sådan det virker.... Man skal krydse af i "svar" ude til venstre.
Det var da smart... :)
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