preg_match_all alleen de eerste Array

Status
Niet open voor verdere reacties.

lano

Gebruiker
Lid geworden
1 sep 2013
Berichten
20
Beste forum helpers,
met onderstaande code vang ik de tekst tussen de td's op. dat gaat bijna goed;) omdat de tabel waar ik de td's ophaal twee keer voorkomt op de website krijg ik twee keer Array ( [0] => Array ( [0], m.a.w. ik krijg alles dubbel. hoe kan ik dit voorkomen of is dit niet mogelijk?

Code:
preg_match_all('/<td>(.*)<\/td>/i', $string, $matches);
 
Dan zul je eerst al een filtering op de juiste tabel moeten doen zodat je die kunt gebruiken als input voor de bovenstaande preg_match_all()
 
Bedankt voor je reactie Tha Devil,
heb nu dit gedaan en dat werkt
$result = array_unique($matches);
 
Laatst bewerkt:
Dat is natuurlijk afhankelijk van de inhoud en de context van je site. Wat vaak wel kan is alleen de eerste instance nemen op een site.
 
Bedankt voor je reactie Wampier, Hoe doe je dat alleen de eerste instance nemen op een site?
 
Het beste is de suggestie van tha devil. Als de table geïdentificeerd wordt door de <table> tag of iets dergelijks, is het het beste eerst de table te rippen en dan de individuele items.

Door een "lazy" match te doen op de <table> tags krijg je als antwoord de eerste table. Op die uitkomst kun je vervolgens je huidige match loslaten. Je doet dus dan twee matches: lazy match op <table> </table> en vervolgens je huidige match
 
Bedankt voor de uitleg Wampier, ik ga het uitproberen;)
 
Vooropgesteld dat rippen not-done is, is HTML ook gewoon XML dus ga je dat niet met regexp oppakken maar met XML tools.
 
En wat is je redenering daarachter? XML is ook tekst dus daar kan regular expressions ook prima voor gebruikt worden. Bovendien werkt het met HTML 1 t/m 5

Rippen betekend letterlijk "uitscheuren" en is niet per se een negatieve uitdrukking
 
En wat is je redenering daarachter?

Wat is de redenering achter XML parsen met XML functies? Wil je dat ik die uitleg? :)

XML is ook tekst dus daar kan regular expressions ook prima voor gebruikt worden.

Het kan ook met substr() en strpos(), dus waarom regular expressions?

Bovendien werkt het met HTML 1 t/m 5

Dat maakt niet zoveel uit, het moet correcte XML vormen, daar heb je een punt, maar je regexp werkt ook alleen als de een /td in de code staat en dat is niet verplicht.

Rippen betekend letterlijk "uitscheuren" en is niet per se een negatieve uitdrukking

Het engelse "to rip" betekent scheuren. Het nederlandse woord "rippen" betekent beroven: http://www.encyclo.nl/begrip/rippen

Maar noem eens een legale reden om data uit een HTML pagina te plukken, dan zet ik daar tegenover: "copyright", "databaserecht" en "als de eigenaar van de site wil dat je zijn data gebruikt, dan heeft hij daar voorzieningen voor zoals RSS feeds".
 
Het ligt wel wat subtieler dan dat, zie NVM versus huizenzoeker (nvm verloren), kranten vs google, etc.. Als je openbare informatie gebruikt en die via een eigen interpretatie omzet in meerwaarde en eigen afgeleide werk onder vermelding van de bron is dat toegestaan.

Een ander voorbeeld is dat veel CAO's woon-werk regelingen doen "aan de hand van de afstand in de ANWB routeplanner". Allemaal leuk en aardig, maar deze planner heeft dus geen API om dat te automatiseren. dat zou betekenen dat duizenden afstanden met de hand ingegeven zouden moeten worden omdat de ANWB geen officiële API vrijgeeft?

En dat in de randstad ineens een prima onschuldig engels woord verkracht wordt heb ik geen boodschap aan :p.
 
Ik heb al die goedpraterij al gehoord, maar ik herhaal het nog maar een keer:

Als je openbare informatie gebruikt en die via een eigen interpretatie omzet in meerwaarde en eigen afgeleide werk onder vermelding van de bron is dat toegestaan.

Dat is de "ik tik het postcodeboek gewoon over" verdediging, en die werkt niet.
De rechtzaken die je noemt zijn rechtzaken geworden omdat de wet zegt dat je die geen databases mag kopieren, ook niet als ze op internet staan en vrij opvraagbaar zijn, punt, en derechter heet er ook alleen over nagedacht omdat er bakken met geld mee gemoeid waren. De rechter heeft uiteindelijk de wet geinterpreteerd en besloten dat in deze gevallen de aangeklaagden niet tot doel hadden om de datbase te kopieren en de bezoekers van de geripte data altijd uitkwam bij de bron van de gegevens. En dat is ook een voorwaarde geworden in het geheel; wat je doet moet ten voordele van de eigenaar van de data zijn.

Het is dus niet zo dat je alles mag kopieren wat je wilt zolang je maar een bron vermeldt.


dat zou betekenen dat duizenden afstanden met de hand ingegeven zouden moeten worden omdat de ANWB geen officiële API vrijgeeft?

Ken jij veel bedrijven die duizenden mensen tegelijk aannemen?

Maar was is de link tusse het rippen van een website en het opvragen van een serie afstanden via een routeplanner? Dat zou not-done zijn als je alle afstanden tussen alle plaatsen in Nedeland wilt ophalen, of als je doet alsof jij een routeplanner hebt terwijl je onderwater de anwb daarvoor misbruikt.
 
We gaan nu wel heel erg offtopic, maar er is nog steeds een kloof tussen "redelijk gedrag" en "illegaal". Helaas is je niet redelijk gedragen niet altijd illegaal.

Je maakt je antwoorden ook wel heel persoonlijk, alsof ik een voorstander zou zijn van elk soort kopiëren. Jaren als consultant bij bedrijven heeft me geleerd dat er heel veel randgevallen zijn. En persoonlijke morele overtuigingen spelen niet altijd een rol. Ik ben heel bekend met dit soort discussies vanuit een professioneel oogpunt.

CAO's worden afgesloten voor mensen die al werken dus die duizenden zijn er al. Je mist de link tussen mijn ANWB voorbeeld en het topic omdat je blijft focussen op "rippen" als stelen ondanks dat ik al heb aangegeven dat ik iets heel anders bedoel. Er zijn hier op helpmij meerdere topics hoe je de ANWB site kunt automatiseren en het antwoord overnemen in je eigen administratie, dit is net zo goed informatie uit een website filteren voor eigen gebruik als een tabel opnemen die eventueel vrij beschikbaar is.
 
Je maakt je antwoorden ook wel heel persoonlijk,

Je wekt de indruk dat je er geen probleem mee hebt om data van een andere site zonder toestemming te gebruiken in je eigen toepassingen, daar ga ik tegenin.

Ik ken jou verder niet dus niets is persoonlijk bedoeld.


CAO's worden afgesloten voor mensen die al werken dus die duizenden zijn er al.

En die duizenden werknemers zitten verspreid over meerdere kantoren en afdelingen met meerdere HR medewerkers die, in het uitzonderlijkge geval dat de CAO wordt aangepast naar een (andere) routeplanner, per persoon in het ergste geval voor hooguit 50 man een afstand zouden moeten opvragen.

Beetje een flut argument hoor :)

Natuurlijk begrijp ik ook wel dat het erg aantrekkelijk is om dat te automatiseren, maar dat verandert niets aan de algemene voorwaarden die de ANWB heeft opgesteld over het gebruik van de planner en dit soort toepassingen. Als zij zeggen dat het niet toegestaan is om de routeplanner op een geautomatiseerde manier uit te vragen dan houdt het op.


[quot]
Je mist de link tussen mijn ANWB voorbeeld en het topic omdat je blijft focussen op "rippen" als stelen ondanks dat ik al heb aangegeven dat ik iets heel anders bedoel.
[/quote]

Dat heb je dan heel subtiel aangegeven want ik heb het gemist :)


dit is net zo goed informatie uit een website filteren voor eigen gebruik als een tabel opnemen die eventueel vrij beschikbaar is.

Dat woordje "vrij beschikbaar" klopt dus niet, de data is niet vrij beschikbaar, het is inzichtelijk gemaakt. En dat je iets mag bekijken betekent niet dat je het mag kopieren en voor jezelf gaan gebruiken.
 
De discussie dwaalt aardig af van het onderwerp. :) Beide partijen hebben hun zegje kunnen doen, elke verdere reactie er op wordt verwijderd.

Willen jullie de discussie voortzetten dan stel ik voor dat jullie die via de Members Chat voeren of via e-mail.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan