/ 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
Noget regexp noget
Fra : Andreas Rasmussen


Dato : 03-01-03 22:53

Hej,

Er der nogen der ligger inde med en bid kode, der kan gå igennem en html
side og så 'høste' alle linksne - helst dem der peger hen til en
billedfil.

Jeg har prøvet med en masse expressions men det er vist sværere end jeg
lige troede - prøvede dog

$text = "<a href=somelink>some text</a>";
preg_match_all("|href=\"?([^\"' >]+)", $text, $array);

fra php.net, men jeg synes ikke rigtig få det til at virke.

På forhånd tak til tips, eller et godt link.

anr

 
 
Jacob Atzen (04-01-2003)
Kommentar
Fra : Jacob Atzen


Dato : 04-01-03 13:54

anrNOT@PARTmac.com (Andreas Rasmussen) writes:

> Jeg har prøvet med en masse expressions men det er vist sværere end jeg
> lige troede - prøvede dog
>
> $text = "<a href=somelink>some text</a>";
> preg_match_all("|href=\"?([^\"' >]+)", $text, $array);
>
> fra php.net, men jeg synes ikke rigtig få det til at virke.

Uden at være regex. expert mener jeg dog, at ovenstående må mangle
noget. Der er ingenting til at matche normale alphanumeriske
tegn. Har du et link til den side på php.net, hvor du har fundet det?

Jeg ville prøve noget i retning af:
preg_match_all("/href=\"?\w+\.[jpg|gif|png]\"?/", $text, $array);

--
Med venlig hilsen
- Jacob Atzen

Jakob Møbjerg Nielse~ (04-01-2003)
Kommentar
Fra : Jakob Møbjerg Nielse~


Dato : 04-01-03 17:55

> $text = "<a href=somelink>some text</a>";
> preg_match_all("|href=\"?([^\"' >]+)", $text, $array);
>
> fra php.net, men jeg synes ikke rigtig få det til at virke.

Dit regexp kræver at der skal være et anførselstegn efter =, altså:

$text = "<a href=\"somelink\">some text</a>";
preg_match_all("|href=\"?([^\"' >]+)", $text, $array);

--
Jakob Møbjerg Nielsen | "Nine-tenths of the universe is the
jakob@dataloger.dk | knowledge of the position and direction
http://www.jakobnielsen.dk/ | of everything in the other tenth."
| -- Terry Pratchett, Thief of Time



Jacob Atzen (05-01-2003)
Kommentar
Fra : Jacob Atzen


Dato : 05-01-03 09:10

"Jakob Møbjerg Nielsen" <jakob@dataloger.dk> writes:

> > $text = "<a href=somelink>some text</a>";
> > preg_match_all("|href=\"?([^\"' >]+)", $text, $array);
> >
> > fra php.net, men jeg synes ikke rigtig få det til at virke.
>
> Dit regexp kræver at der skal være et anførselstegn efter =, altså:
>
> $text = "<a href=\"somelink\">some text</a>";
> preg_match_all("|href=\"?([^\"' >]+)", $text, $array);

Gør spørgsmålstegnet efter \" i regex'et ikke, at anførselstegnet ikke
er nødvendigt?

Hvad betyder i øvrigt den indledende |? Jeg synes ikke php manualen
giver særlig meget information om regex'er :-/

--
Med venlig hilsen
- Jacob Atzen

Jakob Møbjerg Nielse~ (05-01-2003)
Kommentar
Fra : Jakob Møbjerg Nielse~


Dato : 05-01-03 15:10

> Gør spørgsmålstegnet efter \" i regex'et ikke, at anførselstegnet ikke
> er nødvendigt?

Doh! Jo, selvfølgelig gør det det

> Hvad betyder i øvrigt den indledende |? Jeg synes ikke php manualen
> giver særlig meget information om regex'er :-/

Heh. Du har lige løst problemet

Det er delimiteren (afgrænseren?). Den mangler efter udtrykket:

preg_match_all("|href=\"?([^\"' >]+)|", $text, $array);

Mest normalt er det dog at bruge "/":

preg_match_all("/href=\"?([^\"' >]+)/", $text, $array);

Og så vil det også være en god ide at bruge en modifier:

preg_match_all("/href=\"?([^\"' >]+)/i", $text, $array);

der gør at søgningen ikke tager hensyn til store og små bogstaver.

--
Jakob Møbjerg Nielsen | "Nine-tenths of the universe is the
jakob@dataloger.dk | knowledge of the position and direction
http://www.jakobnielsen.dk/ | of everything in the other tenth."
| -- Terry Pratchett, Thief of Time



Kim Emax (06-01-2003)
Kommentar
Fra : Kim Emax


Dato : 06-01-03 11:07

"Jacob Atzen" <jacob@aub.dk> wrote

> Hvad betyder i øvrigt den indledende |? Jeg synes ikke php manualen
> giver særlig meget information om regex'er :-/

Nu er RegEx ikke PHP specific, så det er vel rimeligt nok? Ellers må de jo
også i gang med en størrere manual på Oracle, Java og hvad der nu ellers er
understøttet Jeg kan varmt anbefale "Mastering Regular Expressions" fra
O´reilly http://www.oreilly.com/catalog/regex/

--
Kim Emax



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste