Regx nog wat extra

Status
Niet open voor verdere reacties.

LuckyFm

Gebruiker
Lid geworden
3 feb 2015
Berichten
91
Hallo allemaal,

Voor onze website haal ik gegevens van een andere website met deze code:
Code:
<?php
$regx = '/Programma en uitslagen(.*)<\/table>?/msU';
$scrape_address = "http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=29629&compid=2470&poule=A&district=57";
$ch = curl_init($scrape_address);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, '1');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_ENCODING, "");
$data = curl_exec($ch);
preg_match($regx, $data, $match);
strip_tags($match, '<br>'); 


$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=29629&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23889&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23976&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23886&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23975&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23964&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23963&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23974&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23972&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23971&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23970&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23962&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23973&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23884&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23961&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23883&compid=2470&poule=A&district=57">', ' ', $match[1]);

echo $match[1];
?>

nu is er voor het nieuwe seizoen een future ingebouwd in de website waar ik mijn gegevens vanaf haal.
dit is de html code van één enkele regel:

HTML:
<h3>Programma en uitslagen</h3>
	<table width="100%">
		<tr>
			<th>ronde</th>
			<th>dag</th>
			<th>datum</th>
            <th></th>
						<th>thuis</th>
			<th>uit</th>
			 	
			<th> </th>
			<th colspan="1"> </th>
			<th colspan="2">uitslag</th>
			<th>ct</th>
			<th>cu</th>
			<th>&nbsp;</th>
		</tr>
							<tr>
					<td class="getal">1</td>
					<td>Ma.</td>
					<td>22-08-2016 19:30</td>
					<td>
                    	                    	<div title="Add to Calendar" class="addthisevent">
                            <span class="start">22/08/2016 19:30:00</span>
                            <span class="end">22/08/2016 22:30:00</span>
                            <span class="timezone">Europe/Amsterdam</span>
                            <span class="title">Kamperduin 1 vs Kamperduin 2</span>
                            <span class="description">Biljartwedstrijd 3Bnd B1 - Ronde 1</span>
                            <span class="location"></span>
                            <span class="organizer">KNBB</span>
                            <span class="organizer_email"></span>
                            <span class="all_day_event">false</span>
                            <span class="date_format">DD/MM/YYYY</span>
                            <span class="alarm_reminder">60</span>
                        </div>
            
                    </td>
                    <td><a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=29629&compid=2470&poule=A&district=57">Kamperduin 1</a></td>
					<td><a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=29627&compid=2470&poule=A&district=57">Kamperduin 2</a></td>
                    <td></td>
					<td>&nbsp;</td>
					<td></td>
					<td>&nbsp;</td>
					<td>&nbsp;</td>
					<td>&nbsp;</td>
					<td>&nbsp;</td>
				</tr>

het totale plaatje omvat ongeveer 25 regels, nu wil ik het div blokje niet op mijn pagina's

HTML:
                    	                    	<div title="Add to Calendar" class="addthisevent">
                            <span class="start">22/08/2016 19:30:00</span>
                            <span class="end">22/08/2016 22:30:00</span>
                            <span class="timezone">Europe/Amsterdam</span>
                            <span class="title">Kamperduin 1 vs Kamperduin 2</span>
                            <span class="description">Biljartwedstrijd 3Bnd B1 - Ronde 1</span>
                            <span class="location"></span>
                            <span class="organizer">KNBB</span>
                            <span class="organizer_email"></span>
                            <span class="all_day_event">false</span>
                            <span class="date_format">DD/MM/YYYY</span>
                            <span class="alarm_reminder">60</span>
                        </div>
iemand enig idee hoe ik dit eruit kan filteren??

alvast bedankt voor de hulp
 
Ik ben zelf geen held in reguliere expressies, maar waarom scrape je iets van een andere site?
Ten eerste is er auteursrecht, en ten tweede sta je niet niet garant voor de juiste data. Als de website zijn structuur aanpast zal je script niet meer functioneren.

Ik denk dat het zinniger is om de eigenaar van de site te vragen om een API of een XML-feed waarin de data wordt uitgegeven.
 
beste PHP4U,

Natuurlijk heb ik dat gedaan en ik mag deze data van hun website "plukken" maar verder willen ze niet echt behulpzaam zijn.
Het gaat om competitie biljarten daarvoor heb ik een scorebord ontwikkeld SOFTWARE en daarin zou ik ook graag willen dat middels een API de uitslagen direct op de website worden geplaatst, maar ook dat gaat niet lukken.
Daarom dus deze omweg en die werkt de data is betrouwbaar maar een beetje teveel informatie nu en dat wil ik er graag uit hebben.
 
Bedankt voor de duidelijke opening. Wat wil je houden van de originele code?

Het is wat vreemd dat je gaat voor een regex oplossing voor het uitsnijden van de originele table en vervolgens een hele rits str_replace gebruikt op de plaats waar een regex dat juist op een enkele regel kan (dat is juist een plaats waar een "regular expression" voor is gemaakt: een herhaalde handeling met een paar variabelen afhandelen)

de regex om de div weg te halen wordt zoiets (ongestest):

PHP:
$regx = '/<div.+?>(.+)?<\/div>/gsi';
preg_replace ($regx, '$1', $match[1])
 
Wampier,

Allereerst bedankt voor je reactie van de originele code wil ik alles behouden behalve de kalender optie.

Naar de gewenste pagina

alles onder "Programma en uitslagen" maar dan dus zonder de kalender
 
Dan kun je mijn code toevoegen aan wat je al hebt (onderaan). ik dacht dat je alleen de div zelf wou filteren, het hele blok eruit halen is eigenlijk nog makkelijker:

PHP:
$regx = '/<div.+?>(.+)?<\/div>/gsi';
preg_replace ($regx, '', $match[1])
 
Wampier,

Nu heb ik het volgende:
PHP:
<?php
$regx = '/Programma en uitslagen(.*)<\/table>?/msU';
$scrape_address = "http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=29629&compid=2470&poule=A&district=57";
$ch = curl_init($scrape_address);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, '1');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_ENCODING, "");
$data = curl_exec($ch);
preg_match($regx, $data, $match);
strip_tags($match, '<br>'); 

$regx = '/<div.+?>(.+)?<\/div>/gsi';
preg_replace ($regx, '', $match[1]);

$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=29629&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23889&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23976&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23886&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23975&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23964&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23963&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23974&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23972&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23971&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23970&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23962&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23973&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23884&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23961&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23883&compid=2470&poule=A&district=57">', ' ', $match[1]);
echo $match[1];
?>

maar ik krijg foutmelding:

Warning: preg_replace() [function.preg-replace]: Unknown modifier 'g' in programma.php on line 155

en op lijn 155 staat

PHP:
preg_replace ($regx, '', $match[1]);
 
Haal die g-modifier weg uit je expressie op lijn 12
 
inderdaad foutmelding weg.

Maar nog steeds niet het gewenste resultaat:

1 Ma. 22-08-2016 19:30
22/08/2016 19:30:00 22/08/2016 22:30:00 Europe/Amsterdam Kamperduin 1 vs Kamperduin 2 Biljartwedstrijd 3Bnd B1 - Ronde 1 KNBB false DD/MM/YYYY 60
Kamperduin 1 Kamperduin 2

en ik wil dit heel graag zonder

22/08/2016 19:30:00 22/08/2016 22:30:00 Europe/Amsterdam Kamperduin 1 vs Kamperduin 2 Biljartwedstrijd 3Bnd B1 - Ronde 1 KNBB false DD/MM/YYYY 60
 
Het zal ongetwijfeld mijn onkunde zijn maar hoe pas ik dat in in mijn script???
PHP:
<?php
$regx = '/Programma en uitslagen(.*)<\/table>?/msU';
$scrape_address = "http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=29629&compid=2470&poule=A&district=57";
$ch = curl_init($scrape_address);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, '1');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_ENCODING, "");
$data = curl_exec($ch);
preg_match($regx, $data, $match);
strip_tags($match, '<br>'); 
 
$regx = '/<div.+?>(.+)?<\/div>/gsi';
preg_replace ($regx, '', $match[1]);
 
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=29629&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23889&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23976&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23886&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23975&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23964&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23963&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23974&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23972&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23971&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23970&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23962&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23973&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23884&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23961&compid=2470&poule=A&district=57">', ' ', $match[1]);
$match[1] = str_replace('<a href="http://www.biljartpoint.nl/index.php?page=teamdetail&team_id=23883&compid=2470&poule=A&district=57">', ' ', $match[1]);
echo $match[1];
?>

het lukt mij wel om het voor een enkele regel werkend te krijgen maar ik wil het graag voor het gehele programma.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan