in div linken

Status
Niet open voor verdere reacties.
Zoals je eerder al opmerkte resulteert de functie file() een array.

In die array staan alle regels van de code.
Door dit te doen gaat ie de inhoud van de array per regel echoën.
PHP:
<?php 
$homepage = file('http://www.zeeuwseschaakbond.nl/page.php?143'); 
print_r($homepage);
?>
Vervolgens is het een kwestie van kijken waar de juiste regel te vinden is met de gegevens welke we willen.

Nu scheelt het aardig dat de site de gegevens welke wij willen op 1 regel heeft gedrukt.
Laat je dus de bovenstaande code draaien zul je zien dat er bij regel 282 de juiste regel begint :)

Ik merk al wel dat het niet zo'n sterk script is omdat het mogelijk is dat dat regelnummer veranderd en je dus de verkeerde regel ontvangt.

Ik zal nog kijken of ik daar wat aan kan doen :)
[edit]
Dit in elkaar gezet, controleert nu op bepaalde tags.
[/edit]
PHP:
<?php 
$homepage = file('http://www.zeeuwseschaakbond.nl/page.php?143'); 


echo '<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="content-language" content="nl" />';

foreach($homepage AS $line => $content) {
	if(preg_match("/^<div class='dcenter'><div class='dinner'><div class='cpage_body'>/", $content)) {
		echo $homepage[$line];
	}
}
?>
 
Laatst bewerkt:
Wow en dat doe je zomaar effe:shocked:
top:thumb:

Ik heb nog een andere site waar ik naar toe wil linken, de schaakbond, maar deze heeft geen aparte div's dus dan werkt je prachtige code niet, maar dan kan ik wel regelnummers 1718 t/m 1912 weer laten geven. Alleen wat is het teken t/m in php?

Dus dan heb ik deze code, maar die werkt natuurlijk niet door die t/m:
PHP:
<?php 
$homepage = file('http://www.schaakbond.nl/wedstrijdschaak/knsb-competitie/2008-2009/stand/klasse3f'); 

echo '<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="content-language" content="nl" />';

echo $homepage[1718t/m1912];
?>
 
Gebruik zoiets:

PHP:
for ( $i = 1718 ; $i <= 1912 ; $i++ ) {
  echo $homepage[ $i ]; 
}
 
oke, bedankt.

die code komt me eigenlijk nog bekend voor van mijn informaticalessen:)

Bedankt voor jullie hulp, het is me nooit gelukt dankzij jullie hulp:thumb:
 
Ik heb eigenlijk nog een vraagje over deze php code, ik wil bij een andere site, deze, de tabel weer laten geven. Dus ik denk ik ga leuk aan de slag met jouw code, maar ik krijg telkens een foutmelding, wat ik ook probeer:(
De inhoud van die site verander heel vaak, dus ook de regelnummers wat mijn vorig scriptje nutteloos maakte. Dus hoe kan ik deze weer laten geven?
 
Laatst bewerkt door een moderator:
Zoals je eerder al opmerkte resulteert de functie file() een array.

In die array staan alle regels van de code.
Door dit te doen gaat ie de inhoud van de array per regel echoën.
PHP:
<?php 
$homepage = file('http://www.zeeuwseschaakbond.nl/page.php?143'); 
print_r($homepage);
?>
Vervolgens is het een kwestie van kijken waar de juiste regel te vinden is met de gegevens welke we willen.
Dat al geprobeerd?

Hetgeen met de preg_match() is wel iets lastiger.
 
die regel vinden dat lukt wel, maar zoals ik al eerder zei dat veranderd veel te vaak, dus daarom zou ik met preg_match willen werken.

De juiste regel vinden dat lukt wel, nu is dat deze:

Line #1686 : <table style="width: 521px;">

maar vorige week dan was dat regel no. 1672 en ik heb niet echt zin om dat elke keer aan te passen. Maar als de code vandaar begint, dan kan ik wel met de code substr alleen die tabel weer laten geven, alleen het probleem is dat ik geen flauw idee heb hoe ik mijn pagina telkens kan laten weten bij welke regel hij moet zoeken en deze code werkt helaas niet:

PHP:
<?php 
$homepage = file('http://www.schaakbond.nl/wedstrijdschaak/knsb-competitie/2008-2009/stand/klasse3f'); 


echo '<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="content-language" content="nl" />';

foreach($homepage AS $line => $content) {
    if(preg_match("/^<table style="width: 521px;">/", $content)) {
        echo $homepage[$line];
    }
}
?>

dan krijg ik deze foutmelding:
Parse error: syntax error, unexpected T_STRING in /mnt/web5/20/32/51997132/htdocs/Testarea/test23.php on line 10
 
Die foutmelding komt door de dubbele quotes van het HTML.

Escapen zal de melding verwijderen.
PHP:
<?php 
$homepage = file('http://www.schaakbond.nl/wedstrijdschaak/knsb-competitie/2008-2009/stand/klasse3f'); 
 
 
echo '<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="content-language" content="nl" />';
 
foreach($homepage AS $line => $content) {
    if(preg_match("/^<table style=\"width: 521px;\">/", $content)) {
        echo $homepage[$line];
    }
}
?>
De kans is vrij groot dat je nu een onbruikbare regel krijgt.
Wat ik zou gauw kon zien is dat het deel dat je wilt gebruiken niet op 1 regel staat.

Daarnaast zou het best kunnen dat er meerdere <table style="width: 521px;"> voorkomen in de code.

Maar goed, dit is vast een begin :)
 
De foutmelding is nu opgelost:)
alleen krijg ik helemaal niks te zien nu:confused:

het enige wat ik zie in de broncode is dit:
HTML:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="content-language" content="nl" />

en ik heb effe gekeken en dat is de enige tabel met de <table style="width: 521px;"> tags op die pagina, dus daar kan het niet aan liggen.
 
Ik heb (nog) niet zo veel kijk op regexp's, maar kan het eraan liggen dat er voor

HTML:
<table style="width: 521px;">

nog witruimte staat en dat de functie 'm daarom niet pakt?

Dat je dus of het dakje (^) voor de regexp moet weghalen of whitespace characters moet toevoegen?
 
PHP:
<?php 
$homepage = file('http://www.schaakbond.nl/wedstrijdschaak/knsb-competitie/2008-2009/stand/klasse3f'); 

foreach($homepage AS $line => $content) {
	if(preg_match("/^<table style=\"width: 521px;\">/", $content)) {
		$beginLine = $line;
	}
	if(preg_match("/^<\/table>/", $content)) {
		$endLine = $line;
	}
}
for($i = $beginLine; $i < $endLine; $i++) {
	echo $homepage[$i];
}
?>
Even een andere methode aangepakt.

Deze zoekt zowel voor het begin een regelnummer als voor het einde.

Vervolgens voer ik met die twee getallen een FOR-lus uit om alle regels op te vragen.

Dit script zorgt er bij mij in ieder geval voor dat ik de tabel krijg :)
 
top, het werkt helemaal:thumb:

alleen zit ik nu met een opmaak probleem, die grijze balk die zou helemaal onderaan moeten staan met niks ertussen, hoe krijg ik dat voor elkaar?, als ik die code invoer dan krijg ik dit:
hwp2520testpage.jpg


ik heb gekeken of het aan de <span> of <p> tags ligt door ze eruit te halen:

PHP:
<?php 
$homepage = file('http://www.schaakbond.nl/wedstrijdschaak/knsb-competitie/2008-2009/stand/klasse3f'); 

foreach($homepage AS $line => $content) {
	if(preg_match("/^<table style=\"width: 521px;\">/", $content)) {
		$beginLine = $line;
	}
	if(preg_match("/^<\/table>/", $content)) {
		$endLine = $line;
	}
}
for($i = $beginLine; $i < $endLine; $i++) {
	echo preg_replace('#</?span[^>]*>#is', '', preg_replace('#</?p[^>]*>#is', '', $homepage[$i]));
}
?>

maar dat heeft ook geen effect gehad:(

Dit is de css van die balk:

Code:
#footer
{
clear: both;
margin: 0;
padding: .5em;
color: #333;
background-color: #ddd;
border-top: 1px solid gray;
font-size:12px;
text-align:center;
font-weight:bold;
text-decoration:none;
}

wellicht ligt het aan de 2e tbody, maar die kan ik niet skippen want dan skip ik de eerste
 
Redelijk vreemd want ik krijg die balk helemaal niet te zien :(

Direct na "Uitslagen / indeling" krijg ik "Ronde 6-7 maart"
 
Zo te zien heeft hij nu een conflict met je footer.

Ik zie ook dat hij de laatste </table> niet meeneemt.

Probeer dit eens:
PHP:
<?php 
$homepage = file('http://www.schaakbond.nl/wedstrijdschaak/knsb-competitie/2008-2009/stand/klasse3f'); 
 
foreach($homepage AS $line => $content) {
    if(preg_match("/^<table style=\"width: 521px;\">/", $content)) {
        $beginLine = $line;
    }
    if(preg_match("/^<\/table>/", $content)) {
        $endLine = $line;
    }
}
for($i = $beginLine; $i <= $endLine; $i++) {
    echo $homepage[$i];
}
?>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan