Avatar billede linuxklovnen Nybegynder
28. marts 2004 - 23:41 Der er 17 kommentarer

Fil-mønster til array

Jeg har en fil med et mønster der ser ca. sådan her ud:

<body>
lalala
<a href="http://link1.dk">beskr.</a>
dafkgdfg
<a href="http://link_nr2.net">beskr.</a>
lædfkg
<a href="http://link3.org">beskr.</a>
......
</body>

Jeg vil nu gerne hente alle links fra den fil og smide det ind i en array
$link[1] = "http://link1.dk";
$link[2] = "http://link_nr2.net";
$link[3] = "http://link3.org";

Linksne på denne side bliver opdateret flere gange dagligt, men beholder det samme mønster. Altså <a href="link" target="_new">beskr.</a>
Beskrivelsen af linket er ligemeget, jeg skal bare have linksne til at komme i en array.

På forhånd tak,
canner
Avatar billede squashguy Nybegynder
28. marts 2004 - 23:51 #1
preg_match_all('/<a href="(.*?)" target="_new"/i', $str, $match);

foreach($match[1] as $link){
echo $link
}
Avatar billede linuxklovnen Nybegynder
28. marts 2004 - 23:54 #2
eh ?

måske der skulle følge lidt forklaring med ?
Avatar billede squashguy Nybegynder
28. marts 2004 - 23:56 #3
den snupper alle links af denne type:
<a href="link" target="_new">beskr.</a>

og smider dem over i $match

$match[1] peger på selve adressen..
Avatar billede linuxklovnen Nybegynder
28. marts 2004 - 23:58 #4
preg_match_all('/<a href="(.*" target="_new"/i', $str, $match);

hvorfor /  (.*  og  /i?
Avatar billede linuxklovnen Nybegynder
29. marts 2004 - 00:05 #5
virker ikke
Avatar billede squashguy Nybegynder
29. marts 2004 - 00:08 #6
en lille fejl sneg sig ind. korrekt udseende:
preg_match_all('/<a href="(.*?)" target="_new"/i', $str, $match);

har du mellemrum mellem href="" og target="" ?
Avatar billede madd Nybegynder
29. marts 2004 - 00:08 #7
der mangler en ):

preg_match_all('/<a href="([^"]+)"/i', $str, $match);

foreach($match[1] as $link){
echo $link
}
Avatar billede squashguy Nybegynder
29. marts 2004 - 00:08 #8
hmm.. Eksperten snupper sgu noget af min tekst
Avatar billede linuxklovnen Nybegynder
29. marts 2004 - 00:09 #9
([^"]+) <- hvad er det ?
Avatar billede squashguy Nybegynder
29. marts 2004 - 00:09 #10
madd.. ja, men eksperten snupper lige den del :)
Avatar billede squashguy Nybegynder
29. marts 2004 - 00:12 #11
prøver lige igen

parentes start, punktum, stjerne, spørgsmålstegn, parentes slut:

(.*?)
Avatar billede linuxklovnen Nybegynder
29. marts 2004 - 00:12 #12
opret svar, for det virkede...

alt jeg skal vide nu er hvad ([^"]+) betyder, og så er jeg glad... :)
Avatar billede squashguy Nybegynder
29. marts 2004 - 00:13 #13
. = matcher alle tegn
* = matcher nul eller flere tegn
? = ikke grådig søgning
Avatar billede linuxklovnen Nybegynder
29. marts 2004 - 00:14 #14
squashguy, tak. hvor ser man definationen af dem henne på php.net ?
Avatar billede squashguy Nybegynder
29. marts 2004 - 00:17 #15
Det finder du under regulære udtryk
Avatar billede madd Nybegynder
29. marts 2004 - 00:18 #16
([^"]+) betyder at den henter alt tekst ud hvor der ikke er en " i.
Avatar billede linuxklovnen Nybegynder
29. marts 2004 - 11:35 #17
opret en svar...
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