Avatar billede ohmish Nybegynder
13. maj 2003 - 20:15 Der er 17 kommentarer og
1 løsning

Find/Tag flere ord ud af en liste (email). Med explode?

Jeg har en lang medlemsliste, overført og samlet fra en masse emails til én lang txt-fil inklusive et "|" ved hver medlem. Nu echo'er jeg hele filen som et array med explode og foreach. Hvert medlemsdel ser nu ca. sådan her ud:

Navn: Brian Lawdråb
Gade: Fantasigade 999
Postnr: 1234
By: Rønne
Alder: 15
Favoritmad: Hamburger



Spørgsmålet er:
Hvordan får jeg gennemgået hvert medlem, og udtrukket kun værdierne en for en, så de er til at smide i en database?
Jeg skal altså f.eks finde værdien mellem "Navn: " og "Gade:" hvilket jo vil give værdien "Brian Lawdråb".
At breake ved hvert linieskift holder ikke da det varierer meget. Jeg kan ikke finde løsningen. Hjæælp :)
Avatar billede schaefner Juniormester
13. maj 2003 - 20:18 #1
Er det hver medledm's oplysninger der er adskilt med | eller er det hver medlem?
Avatar billede ohmish Nybegynder
13. maj 2003 - 20:19 #2
hvert medlem. når jeg viser hvert medlem udfra det array jeg har lavet vises det som ovenstående.
Avatar billede Slettet bruger
13. maj 2003 - 21:08 #3
Tror godt du kan finde ud af resten selv!

<?php
$medlem = "Navn: Brian Lawdråb
Gade: Fantasigade 999
Postnr: 1234
By: Rønne
Alder: 15
Favoritmad: Hamburger";

$regexp = "/(Navn: )(((.)|(\\n))*)(Gade: )(((.)|(\\n))*)(Postnr: )(((.)|(\\n))*)(By: )(((.)|(\\n))*)(Alder: )(((.)|(\\n))*)(Favoritmad: )(((.)|(\\n))*)/i";
$matches = array();
preg_match($regexp, $medlem, $matches);
echo "Navn: ".$matches[2]."<br/>";
echo "Gade: ".$matches[7]."<br/>";
echo "Postnr: ".$matches[12]."<br/>";
echo "By: ".$matches[17]."<br/>";
echo "Alder: ".$matches[22]."<br/>";
echo "Favoritmad: ".$matches[27]."<br/>";
?>
Avatar billede ohmish Nybegynder
13. maj 2003 - 21:22 #4
ok det lyder lovende. men hvad nu hvis teksten nogen gange også indeholder en masse andre tegn og halløj. vil det ikke ødelægge funktionen?
Avatar billede Slettet bruger
13. maj 2003 - 21:25 #5
Så længe, "Navn: ", "Gade: " bare står i den rigtige rækkefølge som ovenover vil det virke fint... hvis der nu er en spade som har skrevet Navn="Gade:" vil det nok kikse lidt...
Avatar billede ohmish Nybegynder
13. maj 2003 - 21:27 #6
ok. jeg tester lige. :)
Avatar billede ohmish Nybegynder
13. maj 2003 - 21:30 #7
hvorfor springer du  hvert femte over i $matches?
Avatar billede Slettet bruger
13. maj 2003 - 21:32 #8
Fordi det kun er hver femte du skal bruge, de andre giver noget omsonst output... det har noget med alle parenteserne at gøre...
Avatar billede ohmish Nybegynder
13. maj 2003 - 21:53 #9
jeg får intet ouput.

Måske fejl i:

$matches = array();
preg_match($regexp, $medlem, $matches);

?
Avatar billede Slettet bruger
13. maj 2003 - 21:55 #10
Har du prøvet at køre det ovenstående script som det står?
Avatar billede ohmish Nybegynder
13. maj 2003 - 21:56 #11
hov.. sorry, det ser ud til at virke alligevel.
Avatar billede ohmish Nybegynder
13. maj 2003 - 21:57 #12
fedt. tak ska' du ha'! har du lyst til at tegne og fortælle hvad funktionen gør?
Avatar billede Slettet bruger
13. maj 2003 - 22:02 #13
preg_match() smider alle matches fra som opstår mellem det "regulære udtryk" $regexp og strengen $medlem over i $matches (som et array)...
Et match er kort fortalt hver parantes....
"(Navn: )(((.)|(\\n))*)(Gade: )" denne del af det regulære udtryk finder bl.a. alt indhold mellem "Navn: " og "Gade: "... det er lidt kompliceret og man skal læse det helt for at forstå hvordan det fungerer...
Et regulært udtryk bruges kort fortalt til at finde et mønster i en streng!
Avatar billede ohmish Nybegynder
13. maj 2003 - 22:14 #14
jæs. jeg er ved at forstå regulære udtryk. det var mere hvad du gjorde lige der. det spiller som en kold fadøl.. der er visse ting man bare ikke kan finde svar/hjælp til. jeg havde søgt eksperten og google tynd uden at nærme mig.
Avatar billede ohmish Nybegynder
14. maj 2003 - 02:28 #15
hmm.. det virker sån set godt.
men jeg har lige et lidt extra spørgsmål hvis du kan/vil hjælpe.

Hvad gør jeg hvis linierne ikke altid er ens sat op (rækkefølge)..
og hvad med sidste linie (som også kan variere)?

Skabelonen på hvert afsnit kan variere en smule, alt efter om personen har udfyld feltet. Dvs. hvis feltet "Navn: " er tomt skrives der slet ikke Navn: .

Er det muligt at lave et par "eller" hist og pist, f.eks adskilt med "|"?
jeg ka itt hitt ud af'et.
Avatar billede ohmish Nybegynder
14. maj 2003 - 02:29 #16
hvem der end kan hjælpe med det, får et par point i hatten og stor respekt.
Avatar billede Slettet bruger
14. maj 2003 - 02:31 #17
Angående det med rækkefølgen... kan det godt sorteres i første omgang...
Fortæl lidt mere om hvordan sidste afsnit kan variere...

Opret lige et nyt spørgsmål så ser jeg på det...
Avatar billede ohmish Nybegynder
14. maj 2003 - 03:03 #18
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