[php] HTML tabel filteren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • 0fbe
  • Registratie: Januari 2004
  • Laatst online: 19:32
Ik ben weer eens ten einde raad,

Ik heb alles geprobeert,

Wat wil ik doen;

Ik heb een html tabel hieruit wil ik alleen een deel weergeven, dit deel bevat een klasse naam (bijv. 4B) Met regular expressions kwam ik er niet uit;

Dit is mijn tabel;
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<TABLE cellspacing="0" cellpadding="0">
<TR valign="top"><TD>19-05-2005 </TD>
<TD colspan="3">1e uur proefwerk GR/LA klas 4</TD></TR>
<TR valign="top"><TD></TD><TD width="90"><I>Klas 41:&nbsp;</TD><TD>In 44 (VE)</I></TD></TR>
<TR valign="top"><TD></TD><TD width="90"><I>Klas 42 :&nbsp;</TD><TD>In 54 (NW)</I></TD></TR>
<TR valign="top"><TD></TD><TD width="90"><I>Klas 43:&nbsp;</TD><TD>In 27 (HA)</I></TD></TR>
<TR valign="top"><TD></TD><TD width="90"><I>Klas 44:&nbsp;</TD><TD>In 46 (NT)</I></TD></TR>
<TR valign="top"><TD></TD><TD width="90"><I>Klas 45:&nbsp;</TD><TD>In 17 (KA)</I></TD></TR>
<TR><TD><BR></TD></TR>
<TR valign="top"><TD>19-05-2005 </TD>
<TD colspan="3">Hr.Hoogeboom afwezig</TD></TR>
<TR valign="top"><TD></TD><TD width="90"><I>Klas 2B:&nbsp;</TD><TD>4e uur in 19<br>5e uur L.O. (v.d.Cammen)</I></TD></TR>
<TR><TD><BR></TD></TR>
<TR valign="top"><TD>19-05-2005 </TD>
<TD colspan="3">Lokaal 50 niet beschikbaar</TD></TR>
<TR valign="top"><TD></TD><TD width="90"><I>Klas 3D:&nbsp;</TD><TD>5e uur EC  in  46 (Krebber)</I></TD></TR>
<TR valign="top"><TD></TD><TD width="90"><I>Klas 4A:&nbsp;</TD><TD>6e uur MY  in 11 (Krebber)</I></TD></TR>
<TR valign="top"><TD></TD><TD width="90"><I>Klas 4E:&nbsp;</TD><TD>4e uur MY  in  46 (Krebber)</I></TD></TR>
<TR valign="top"><TD></TD><TD width="90"><I>Klas 56:&nbsp;</TD><TD>3e uur EC12  in 46 (Krebber)</I></TD></TR>
<TR><TD><BR></TD></TR>
<TR valign="top"><TD>19-05-2005 </TD>
<TD colspan="3">Mevr.Scheffers 6e uur afwezig</TD></TR>
<TR valign="top"><TD></TD><TD width="90"><I>Klas 2D:&nbsp;</TD><TD>3e uur LA in 55 (v.d.Burg)<br>6e uur BI in 36 (Wijnen)</I></TD></TR>
<TR><TD><BR></TD></TR>
<TR valign="top"><TD>19-05-2005 </TD>
<TD colspan="3">Toneel voor klas 3 en 4 in 59</TD></TR>
<TR valign="top"><TD></TD><TD width="90"><I>Klas 3:&nbsp;</TD><TD>6e uur<br>N.B. 7e uur beg gaat door.</I></TD></TR>
<TR valign="top"><TD></TD><TD width="90"><I>Klas 4:&nbsp;</TD><TD>3e uur</I></TD></TR>
<TR><TD><BR></TD></TR>
<TR valign="top"><TD>19-05-2005 </TD>
<TD colspan="3">Voorlichting over Internationalisering</TD></TR>
<TR valign="top"><TD></TD><TD width="90"><I>Klas 4A:&nbsp;</TD><TD>ma 23-05, 4e uur</I></TD></TR>
<TR valign="top"><TD></TD><TD width="90"><I>Klas 4B:&nbsp;</TD><TD>ma 23-5,  5e uur</I></TD></TR>
<TR valign="top"><TD></TD><TD width="90"><I>Klas 4C:&nbsp;</TD><TD>ma 23-05, 1e uur</I></TD></TR>
<TR><TD><BR></TD></TR>
</TABLE>
</body>
</html>


Alles wat tussen
HTML:
1
<TR valign="top"> en <TR><TD><BR></TD></TR>
staat is een unit, als hier bijv. 4B in staat moet deze weergegeven worden, staat deze er niet moet hij gefilterd worden.

Google gaf mij niks, Php.net ook niet,

Wie helpt mij

[ Voor 40% gewijzigd door 0fbe op 18-05-2005 19:52 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

Ik ben weer eens ten einde raad,

Ik heb alles geprobeert,
En wat heb je dan allemaal al geprobeerd?? Wat lukte daar niet mee? Hoe gebruik je deze HTML nu? Als een include? Met fopen? Zie ook P&W FAQ - De "quickstart"

Het lijkt me een kleine moeite om regel voor regel te kijken wat er in die HTML staat en dan te bepalen of je een unit af wil drukken of niet.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • 0fbe
  • Registratie: Januari 2004
  • Laatst online: 19:32
Creepy schreef op woensdag 18 mei 2005 @ 20:07:
[...]

En wat heb je dan allemaal al geprobeerd?? Wat lukte daar niet mee? Hoe gebruik je deze HTML nu? Als een include? Met fopen? Zie ook P&W FAQ - De "quickstart"

Het lijkt me een kleine moeite om regel voor regel te kijken wat er in die HTML staat en dan te bepalen of je een unit af wil drukken of niet.
Hierbij de code;

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
$username = "leerling";
$password = "****";
IF (!isset($totaal))
{
$totaal = '';
}
$file = "http://".$username.':'.$password."@www.gymnasiumbeekvliet.nl/hypertext/FMPro?-DB=Roosterwijzigingen.fp5&-Format=roosterwijzigingen.htm&-Lay=Formulier_web&Web_ja|nee=Ja&-SortField=Datum&-SortOrder=ascend&-SortField=Omschrijving&-SortOrder=ascend&-SortField=Roosterklassen::Klas&-SortOrder=ascend&-Error=fout.htm&-Find";
if($pagina = @file($file)){
$stuk ="";
foreach($pagina as $stuk){
$totaal .= $stuk;
}

$totaal = explode('<H1>Roosterwijzigingen</H1>', $totaal);
$totaal = str_replace('&nbsp;&nbsp;&nbsp;</TD>' , ' </TD>' , $totaal);
if (preg_match("#<TD colspan=[^<>]*>(.*?)4B[^<>]*>(.*?)<TR><TD><BR></TD></TR>#iu", '' , $totaal)) {
   echo "#<TD colspan=[^<>]*>(.*?)4B[^<>]*>(.*?)<TR><TD><BR></TD></TR>#iu";
} else {
   echo "";
}

$totaal = ''.$totaal[1];
}else{
     $totaal = "Sorry, maar de site is momenteel niet werkende, dus zul je helaas even geduld moeten hebben";
}
?>


Het gaat volgens mij fout bij het echo-en, Ik moet eigenlijk iets hebben dat elke sectie in stukken opdeelt, en dan gaat kijken zit er dat in zoja-> laten zien ->zonee niet laten zien

[ Voor 53% gewijzigd door 0fbe op 18-05-2005 20:29 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

PHP:
1
2
preg_match_all("#<TR valign=\"top\">(.*)<TR><TD><BR></TD></TR>#iU", $text, $matches);
print_r($matches);

;)

[ Voor 5% gewijzigd door NMe op 18-05-2005 23:06 . Reden: Parameter vergeten ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • 0fbe
  • Registratie: Januari 2004
  • Laatst online: 19:32
-NMe- schreef op woensdag 18 mei 2005 @ 21:09:
PHP:
1
2
preg_match_all("#<TR valign=\"top\">(.*)<TR><TD><BR></TD></TR>#iU", $matches);
print_r($matches);

;)
preg_match_all() expects at least 3 parameters, 2 given in C:\Documents and Settings\Tim\Mijn documenten\RWB\rwbinet.php on line 17
(ik gebruik Zend Studio)

[ Voor 19% gewijzigd door 0fbe op 18-05-2005 21:41 ]


Acties:
  • 0 Henk 'm!

  • UniCache2
  • Registratie: Januari 2001
  • Laatst online: 20-09 11:57
code:
1
2
3
4
<? 
preg_match_all("#<TR valign=\"top\">(.*)<TR><TD><BR></TD></TR>#iU", $totaal  ,$matches); 
print_r($matches); 
?>

zie ook
http://nl2.php.net/preg_match_all

Acties:
  • 0 Henk 'm!

  • 0fbe
  • Registratie: Januari 2004
  • Laatst online: 19:32
Mijn output nu;
Array
(
[0] => Array
(
)

[1] => Array
(
)
*Tim word gek

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

Dan match er blijkbaar niks. Ga nu zelf eens nadenken om een regular expression te bouwen die je kan gebruiken.. we moeten je zo wel erg aan het handje houden. Toon zelf eens wat initiatief.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Nick The Heazk
  • Registratie: Maart 2004
  • Laatst online: 07-09-2024

Nick The Heazk

Zie jij er wat in?

ik denk ook niet dat je veel bij een ongedefinieerde string gaat matchen ...

jij typt:
PHP:
1
2
preg_match_all("#<TR valign=\"top\">(.*)<TR><TD><BR></TD></TR>#iU", $matches); 
print_r($matches);


Terwijl je dit bedoelt:
PHP:
1
2
preg_match_all("#<TR valign=\"top\">(.*)<TR><TD><BR></TD></TR>#iU", /*HTMLPAGINA INHOUD HIER (eerst inlezen als string dus)*/ $html, $matches); 
print_r($matches);


Wat jou code probeert te doen is $matches te matchen op je regex. Maar $matches is leeg (want ongedifineerd, tenzij je een andere waarde reeds had ingesteld) en retourneerd dan ook de mooie lege string.

[ Voor 40% gewijzigd door Nick The Heazk op 18-05-2005 23:13 ]

Performance is a residue of good design.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Nick The Heazk schreef op woensdag 18 mei 2005 @ 23:10:
Wat jou code probeert te doen is $matches te matchen op je regex. Maar $matches is leeg (want ongedifineerd, tenzij je een andere waarde reeds had ingesteld) en retourneerd dan ook de mooie lege string.
Nee, die regex is gewoon fout, maar wel conform wat TS vroeg in de topicstart. Aanpassen stelt echter niet veel voor, dus dat zou gewoon moeten lukken. :)

Verder heb je natuurlijk wel gelijk over het aantal parameters, maar dat kwam door een foutje van mij. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1