[PHP] Verander HTML en geef pagina weer

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
Op school hebben wij een roostersysteem wat automatisch scrollt. Nu is dat heel irritant, om achter je eigen pc te moeten wachten op de informatie terwijl we zelf wel kunnen scrollen. Nu heb ik gezien dat ik met FireBug alleen maar 2x overflow: hidden hoef weg te halen om de scrollbalk te laten zien én de mogelijkheid tot scrollen te activeren...

Nu wil ik dit dus verwerken in een website, maar nu is de vraag dus; hoe geef ik een pagina weer zonder die DIV-elementjes? Dus mijn webserver moet ze eruitplukken en vervolgens de pagina laten zien...

Of kan ik met een stukje code dat via een bookmark doen? Dat zie je ook wel eens bij youtube, je hebt dan een stukje javascript als bookmark, en als je dan op die YT pagina zit, kan je met behulp van die bookmark een filmpje van YT plukken...

Kan iemand mij even uitleggen met welke woorden ik moet zoeken, en of dit uberhaupt mogelijk is?

Acties:
  • 0 Henk 'm!

  • Copyman
  • Registratie: Januari 2001
  • Laatst online: 09:55

Copyman

Dode muis

Je zou dit ook met de Greasemonkey plugin voor Firefox kunnen doen. Dan haal je simpelweg de overflow van het element af met een klein stukje Javascript code. :)

Zeer belangrijke informatie: Inventaris


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Dit heeft niet bepaald veel te maken met webdevelopment. Je probeert het gedrag van je browser aan te passen, niet de daadwerkelijke website want daar heb je geen toegang toe. Met dat in het achterhoofd heeft je topic niet zoveel te zoeken in een developmentforum en des te meer in een softwareforum. :)

Aangezien je aangeeft FireBug te gebruiken voeg ik ook even toe aan je titel dat het om Firefox gaat. :)

WEB>>CSA

'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!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
mja ik kan het aan mijn kant idd wel aanpassen, dat lukt ook prima, maar ik wil graag iets maken (een stukje code) die dus die elemten eruit plukt en de veranderende pagina laat zien op bijvoorbeeld www.rooster.nl/rooster

Zodat iedereen op 'mijn' manier de pagina kan zien... Dus mijn webserver moet de site downloaden, de code aanpassen en weer laten zien op een ander plek, www.rooster.nl/rooster bijvoorbeeld.

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Is er een (programmeertaal) die je kent? Met Javascript via een bookmarklet, of via PHP serverside is dit allebei vrij eenvoudig te bouwen namelijk :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
Ken van HTML/PHP/Java een beetje, de basics... Maar die heb ik gekregen doordat ik scripts zat aan te passen. From scratch kan ik zelf niet iets bouwen helaas...

Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
Ah, met lang zoeken heb ik het volgende gevonden:
link

Hij doet het opzich goed, ware het neit dat ik de pagina niet voorgeschoteld krijg. Mijn server geeft na het 'strippen' een 404. als ik de bron bekijk van de 404, vraagt Firefox of ik de formulierinformatie opnieuw wil verzenden. Als ik daarvoor kies, dan komt keurig de gestripte HTML-pagina naar voren (als broncode). Hij doet het dus wel, maar hij geeft de pagina dus niet weer. Mis ik wat in de code hiervoor?

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Hoe verwacht je dat wij daar iets zinnigs over kunnen zeggen als je je code niet eens meepost? :)

Ik zal je topic ook maar weer terugmoven.

'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!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
Excuus. Met simpele HTML code doet hij het wel goed (geeft hij de gewijzigde pagina wel weer) maar met wat moeilijkere code doet hij het niet (wel in de bron, maar ik krijg een 404)

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php
if(isset($_POST['submit']))
{
    // storing the domain name posted in a variable
    $domain = $_POST['domain'];
    
    // fopen(string filename, "r") opens for reading only; place the file pointer at the beginning of the file. 
    $handle = fopen("http://$domain","r");
    
    $contents = '';
    
    // feof() Tests for end-of-file on a file pointer 
    // Returns TRUE if the file pointer is at EOF or an error occurs (including socket timeout); otherwise returns FALSE. 
    while (!feof($handle)) {
    
     // string fread ( resource handle, int length )
     // fread() reads up to length bytes from the file pointer referenced by handle. Reading stops when up to length bytes have been read, EOF (end of file) is reached
     $contents .= fread($handle, 8192);
    }   
    //var_dump($contents);
            
    fclose($handle);
    //var_dump($contents);
    
    $url = parse_url("http://".$domain);        
}

if(isset($_POST['change']))
{
    // You have the html source code in the variable $code
    $code = $_POST['code'];
    
    // $present consits of the text present in the html source code that is to be replaced
    $present = $_POST['present'];
    
    // $replace consits of the text that you are going to replace $present with
    $replace = $_POST['replace'];
    
    // string ereg_replace ( string pattern, string replacement, string string )
    // This function scans string for matches to pattern, then replaces the matched text with replacement. 
    // The modified string is returned. (Which may mean that the original string is returned if there are no matches to be replaced.) 
    $code = ereg_replace($present, $replace , $code);
    
    // string stripslashes ( string str )
    // Returns a string with backslashes stripped off. (\' becomes ' and so on.) Double backslashes (\\) are made into a single backslash (\). 
    // This is useful if you are using slashes in $present or in $replace
    echo stripslashes($code);
    
    exit;
}

?>

<html><head>



  <form method="post" name="pageform" action="" onsubmit="return validate(this);">
        
        <table border="0" style="border-collapse: collapse" width="">
        <tr>
        <td width="" height="91" valign="top">
        <table style="border-collapse: collapse" width="" class="tooltop" height="76">
        
        <tr>
        <td>
        <table border="0" style="border-collapse: collapse" width="" cellspacing="5">
        <tr>
        <td height="28" width="100"><font size="2"><b>View source of</b></font><b><font size="2">:
        </font></b></td>
        <td height="28" width="">
        <font size="1">http://</font><input type="text" name="domain" size="26" value="<?=$_POST['domain']?>"></td>
        <td height="28" width="">
        <input type="submit" name="submit" value="View!" style="float: left"></td>
        </tr>
        <tr>
        <td width="" height="21">&nbsp;</td>
        <td width="" colspan="2" height="21" valign="top"><font size="1">PS: Don't put http:// in front.</font></td>
        
        </tr>       
        </table>
        </td>
        </tr>
        </table>
        </td>
        </tr>  
        <?php
        if(isset($_POST['submit']))
        {
        ?>
        <tr>
            <td>
                <textarea rows="10" cols="60" name="code"><?=$contents?></textarea> 
                <input type="hidden" name="url" value="<?=$url['host']?>" />    
            </td>
        </tr> 
        <tr><td>Present url text: <input type="text" name="present" size="50" /></td></tr>
        <tr><td>Replace url text: <input type="text" name="replace" size="50" /></td></tr>
        
        <tr>
            <td><br/>
                <input type="submit" name="change" value="Change!" />
            </td>
        </tr>     
        <?php
        }
        ?>
        </table>
        </form>
        <script language="JavaScript">
        function validate(theform) {
        if (theform.domain.value == "") { alert("No Domain"); return false; }
        return true;
        }
        </script>
                
        
</body></html>



met bijvoorbeeld
HTML:
1
<html><body>henk</body></html>

doet hij het goed, en krijg ik de gewijzigde pagina daarna mooi te zien, maar met bijvoorbeeld de source van www.google.nl doet hij het niet meer...

Hmm, nu opeens wel :? Raar...

Acties:
  • 0 Henk 'm!

  • donquix
  • Registratie: Augustus 2009
  • Laatst online: 17-09 22:55
Je kan de pagina toch met php geheel inlezen en dan de nodige dingen eruit "slopen" waarna je hem echo-ed?

PHP:
1
2
3
4
5
6
ob_start();
readfile("http://www.rooster.nl/"]);
$site = ob_get_contents();
$site = str_replace('<div id="rooster_scroll">', "", $site); //o.i.d.
ob_end_clean();
echo $site;

Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
donquix schreef op zondag 11 oktober 2009 @ 22:37:
Je kan de pagina toch met php geheel inlezen en dan de nodige dingen eruit "slopen" waarna je hem echo-ed?

PHP:
1
2
3
4
5
6
ob_start();
readfile("http://www.rooster.nl/"]);
$site = ob_get_contents();
$site = str_replace('<div id="rooster_scroll">', "", $site); //o.i.d.
ob_end_clean();
echo $site;
Dit werkt ook idd, veel makkelijker :D

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

offtopic:
POSIX-regular expressions (alle functies die beginnen met "ereg_") zijn deprecated en worden per PHP 6.0 zelfs helemaal niet meer ondersteund. Je kan beter de PCRE-regular expressionfuncties gebruiken (alle functies die beginnen met "preg_"). ;)

Los daarvan zie ik inderdaad niet waarom je zo moeilijk aan het doen bent. Je hebt een bepaalde pagina die je op een bepaalde manier wil weergeven, da's verder dan toch niet meer dan een stukje HTML replacen? Begin daar eens mee in plaats van er een heel formulier omheen te bouwen. ;)

'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!

  • donquix
  • Registratie: Augustus 2009
  • Laatst online: 17-09 22:55
maarud schreef op zondag 11 oktober 2009 @ 22:39:
[...]

Dit werkt ook idd, veel makkelijker :D
offtopic:
Via deze weg haal ik hele sites naar binnen hoor! ;)

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Wat zijn er hier vreemde methoden om file_get_contents na te bootsen. ;) Daarnaast kun je eventueel ook nog DOMDocument gebruiken als simpelweg str_replace/preg_replace niet gaat. Dan krijg je ongeveer dezelfde representatie als in Firebug.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
Het is mij gelukt om het meeste te replacen (heb wat background-images gereplaced omdat de paden relatief waren en ik dus geen achtergrond zag), dat is gelukt, maar als ik dit doe:

PHP:
1
$site = str_replace('overflow: hidden;', '', $site); //o.i.d.


dan vervangt ie dat niet?

Acties:
  • 0 Henk 'm!

  • donquix
  • Registratie: Augustus 2009
  • Laatst online: 17-09 22:55
maarud schreef op zondag 11 oktober 2009 @ 22:55:
Het is mij gelukt om het meeste te replacen (heb wat background-images gereplaced omdat de paden relatief waren en ik dus geen achtergrond zag), dat is gelukt, maar als ik dit doe:

PHP:
1
$site = str_replace('overflow: hidden;', '', $site); //o.i.d.


dan vervangt ie dat niet?
Hij vervangt dan "overflow: hidden;" door niks, dus precies wat jij wilt.

EDIT:
Even eroverheen gelezen dat je zei dat hij het niet vervangt. Misschien dat je de variabele niet goed hebt vervangen? Wellicht kun je even de hele code posten.

[ Voor 15% gewijzigd door donquix op 11-10-2009 22:58 ]


Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
donquix schreef op zondag 11 oktober 2009 @ 22:56:
[...]

Hij vervangt dan "overflow: hidden;" door niks, dus precies wat jij wilt.

EDIT:
Even eroverheen gelezen dat je zei dat hij het niet vervangt. Misschien dat je de variabele niet goed hebt vervangen? Wellicht kun je even de hele code posten.
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php
ob_start();
readfile("http://monitor.college.nl/Page/tv_id=33");
$site = ob_get_contents();
$site = str_replace('background-image: url(/Media/View/30093);', 'background-image: url(http://monitor.college.nl/Media/View/30093);', $site); //doet het perfect
$site = str_replace("background-image:url('/Media/View/30093')", 'background-image: url(http://monitor.college.nl/Media/View/30093);', $site); //doet het perfect
$site = str_replace("body{overflow: hidden;", 'body{', $site); //werkt niet
$site = str_replace('overflow: hidden;', '.', $site); //werkt ook niet goed
ob_end_clean();
echo $site;
?>

[ Voor 61% gewijzigd door maarud op 11-10-2009 23:00 ]


Acties:
  • 0 Henk 'm!

  • donquix
  • Registratie: Augustus 2009
  • Laatst online: 17-09 22:55
pedorus schreef op zondag 11 oktober 2009 @ 22:54:
Wat zijn er hier vreemde methoden om file_get_contents na te bootsen.[...]
Ik kreeg steeds beveiligingserrors als ik een https pagina probeerde te laden. Dat probleem had ik niet als ik het via bovenstaande manier deed.

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Misschien dat de case niet klopt. Dus iets als:
PHP:
1
echo str_ireplace('overflow: hidden;','',file_get_contents('http://www.rooster.nl/'));

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Of spaties/tabs... Of andere onzichtbare tekens.... Of... De code zou in elk geval moeten doen wat jij wil.

'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!

  • donquix
  • Registratie: Augustus 2009
  • Laatst online: 17-09 22:55
Even letterlijk uit de originele bron kopiëren?

Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
Het is heel gek, de eerste overflow hidden haalt hij wel weg:

HTML:
1
<style media="screen" type="text/css">body{overflow: hidden;/* scrollbalk weg */


wordt:

HTML:
1
<style media="screen" type="text/css">body{/* scrollbalk weg */


maar de andere niet:

HTML:
1
<div style="overflow: hidden; position: relative;


wordt:

HTML:
1
<div style="overflow: hidden; position: relative;


@hieronder:

ook al doe ik
PHP:
1
$site = str_replace('<div style="overflow: hidden; position: relative; ', '<div style="position: relative; ', $site);


nog wil hij niet :?

ik moet wel single quotes gebruiken lijkt me, anders kom ik in de sjeis met div style="

alles vervangt hij, behalve die ene lijn code :S

[ Voor 117% gewijzigd door maarud op 11-10-2009 23:18 ]


Acties:
  • 0 Henk 'm!

  • donquix
  • Registratie: Augustus 2009
  • Laatst online: 17-09 22:55
Uit de originele bron de stukken code (dus o.a. overflow: hidden; ) die je wilt vervangen kopiëren en dan plakken in je str_replace.

EDIT:
Misschien dat " vs ' nog wat uitmaakt, dus double quotes vs single quotes. Het blijft hoe dan ook raar dat hij hem niet veranderd.

EDIT2:
maarud schreef op zondag 11 oktober 2009 @ 23:05:
[...]ik moet wel single quotes gebruiken lijkt me, anders kom ik in de sjeis met div style="
Je zou hem kunnen escapen.. Maarrr hij moet het gewoon doen toch?!? :?

[ Voor 77% gewijzigd door donquix op 11-10-2009 23:18 ]


Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
De originele bron die ik wil veranderen is wel verminkt met allerlei vieze IE trucjes, misschien dat de PHP functie daardoor misleid wordt en een andere bron ziet, en dus niet die overflow die hij moet verwijderen?

edit:

wtf, dit werkt wel

PHP:
1
$site = str_replace('overflow:hidden;', 'henk', $site); //o.i.d.


zonder de spatie... :S

[ Voor 23% gewijzigd door maarud op 11-10-2009 23:23 ]


Acties:
  • 0 Henk 'm!

  • donquix
  • Registratie: Augustus 2009
  • Laatst online: 17-09 22:55
@hierboven
Er stond toch duidelijk een spatie in jou eerder geposte bron.. Raar verhaal dit :?

Maar gelukkig werkt het nu wel!

[ Voor 75% gewijzigd door donquix op 11-10-2009 23:24 ]


Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
het werkt fantastisch :D Dit is best wel leuk, nu moet ik me maar eens verdiepen hierin, zodat ik nog een functie kan maken waardoor ik een e-mail krijg als er een bepaalde wijziging op staat. Moet te doen zijn... :P
if 'henk', mail to .... :P

Acties:
  • 0 Henk 'm!

  • dragontje124
  • Registratie: Mei 2009
  • Laatst online: 07-09 17:50
haha nice, ik heb voor mijn school rooster pagina een msnbot gemaakt die als er een wijziging is een berichtje stuurt naar degene waar die wijziging voor geld :)
(in php, niet de beste taal om een msn bot te laten draaien maarja :P)

[ Voor 22% gewijzigd door dragontje124 op 11-10-2009 23:54 ]


Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
dragontje124 schreef op zondag 11 oktober 2009 @ 23:52:
haha nice, ik heb voor mijn school rooster pagina een msnbot gemaakt die als er een wijziging is een berichtje stuurt naar degene waar die wijziging voor geld :)
(in php, niet de beste taal om een msn bot te laten draaien maarja :P)
hmm, dat klinkt ook wel gaaf, bereid om de code te delen? :D Ben nu ook aan het zoeken naar PHP Msn Bots, inderdaad een gave functie :)

[ Voor 8% gewijzigd door maarud op 12-10-2009 00:04 ]


Acties:
  • 0 Henk 'm!

  • dragontje124
  • Registratie: Mei 2009
  • Laatst online: 07-09 17:50
ik heb deze msn bot class gebruikt:
http://code.google.com/p/phpmsnclass/
is de enige class die ik gevonden heb die MSNP15 ondersteund (offline berichten enzo)

Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
dragontje124 schreef op maandag 12 oktober 2009 @ 00:07:
ik heb deze msn bot class gebruikt:
http://code.google.com/p/phpmsnclass/
is de enige class die ik gevonden heb die MSNP15 ondersteund (offline berichten enzo)
dat is wel gaaf. Ik heb alleen geen SSH toegang tot de server, dus volgens mij kan ik er niets mee :'(

Acties:
  • 0 Henk 'm!

  • dragontje124
  • Registratie: Mei 2009
  • Laatst online: 07-09 17:50
jawel hoor, je kan gewoon msnbot.php runnen via je browser, op sommige servers blijft ie gewoon aan staan als je je browser sluit en anders moet je gewoon je browser open laten staan xD

Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
goed, ik heb geen pnctl support... Dus kan er alsnog niets mee :) Maar ach, nu gaan we teveel offtopic, het belangrijkste is dat het script van mij werkt :)

Probeer nu IMified uit, ziet er ook heel goed uit :)

[ Voor 15% gewijzigd door maarud op 12-10-2009 00:36 ]


Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
Ik ben nu even bezig met die bot; maar ik kom er even niet uit. Wat het script moet doen, is de htmlcode doorzoeken op een tabel, en de inhoud van één kolom, eruit halen en weergeven...

Nu heb ik php.net even doorzocht en ik heb het gevoel dan ik preg_match moet gebruiken?

Zoiets?
PHP:
1
2
3
4
5
6
<?php
$subject = file_get_contents("tabel.html")
$pattern = '';
preg_match($pattern, $subject, $matches);
print_r($matches);
?>


Nu is de vraag wat ik meot invullen bij pattern. Vaak lees ik in tutorials een wirwar van [/\@":] tekens, hoe werkt dat?
Tevens krijg ik dan een array als output en ik wil gewoon plain text als output... Er is dus vast een andere functie beter geschikt... Kan iemand mij even op weg helpen?

[ Voor 9% gewijzigd door maarud op 12-10-2009 21:59 ]


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

dragontje124 schreef op maandag 12 oktober 2009 @ 00:15:
jawel hoor, je kan gewoon msnbot.php runnen via je browser, op sommige servers blijft ie gewoon aan staan als je je browser sluit en anders moet je gewoon je browser open laten staan xD
:X

Da's meteen wel erg brak. Schrijf het dan zo dat 'ie gewoon kijkt of er updates zijn elke keer dat 'ie gerund wordt en maak er een cronjob voor die zorgt dat het script aangeroepen wordt. :P

'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!

  • donquix
  • Registratie: Augustus 2009
  • Laatst online: 17-09 22:55
Ik had toen der tijd een script die de hele pagina opsloeg (in een text bestand :D) en dan elk kwartier via een cronjob keek of de huidige site het zelfde was als die in het text bestand. Wanneer er een wijziging was stuurde hij een mailtje en ververste hij het text bestand. Werkte perfect!

Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
donquix schreef op dinsdag 13 oktober 2009 @ 17:53:
Ik had toen der tijd een script die de hele pagina opsloeg (in een text bestand :D) en dan elk kwartier via een cronjob keek of de huidige site het zelfde was als die in het text bestand. Wanneer er een wijziging was stuurde hij een mailtje en ververste hij het text bestand. Werkte perfect!
Zijn leuke dingen die je er mee kan doen :)

Alleen jammer genoeg doet mijn school alles met de wizard publiceren van excel, dus 99% van de site bestaat uit enorm veel tabellen, en ik moet dus de informatie 'extracten' uit de tabel, daar zoek ik nu een PHP-functie voor...

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Dezelfde die je hierboven gebruikt. :?

'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!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
NMe schreef op dinsdag 13 oktober 2009 @ 18:19:
Dezelfde die je hierboven gebruikt. :?
Zoiets zat ik aan tedenken, maar nu replace ik iets terwijl ik juist niet iets wil replacen maar juist extracten...

Er staat bijvoorbeeld iets tussen <td></td> en datgene moet ik eruit pikken....

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 10:22

MueR

Admin Tweakers Discord

is niet lief

Tja, mits het fatsoenlijke HTML is kan je ook met een xpath ofzo gaan werken.

Edit:
Laat maar, ik zie dat ze excel gebruiken :X

[ Voor 26% gewijzigd door MueR op 13-10-2009 19:36 ]

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • doeternietoe
  • Registratie: November 2004
  • Laatst online: 17-09 20:56
maarud schreef op dinsdag 13 oktober 2009 @ 18:38:
[...]

Zoiets zat ik aan tedenken, maar nu replace ik iets terwijl ik juist niet iets wil replacen maar juist extracten...

Er staat bijvoorbeeld iets tussen <td></td> en datgene moet ik eruit pikken....
Een combinatie van strpos en substr zou dat moeten kunnen.

Acties:
  • 0 Henk 'm!

  • donquix
  • Registratie: Augustus 2009
  • Laatst online: 17-09 22:55
Als er een bepaalde regelmaat zit in het publiceren van roosterwijzigingen kun je ze er met een regular expression er wel uit filteren. Wellicht kun je ons een stukje van je roostersite laten zien? Dan kunnen we je hier vast wel even op weg helpen.

Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
donquix schreef op dinsdag 13 oktober 2009 @ 20:34:
Als er een bepaalde regelmaat zit in het publiceren van roosterwijzigingen kun je ze er met een regular expression er wel uit filteren. Wellicht kun je ons een stukje van je roostersite laten zien? Dan kunnen we je hier vast wel even op weg helpen.
Er zit wel steeds een pattern in, maar het lijkt me opzich best wel lastig. Een voorbeeld is hier te vinden (van een dag).

Ik wil dus het gebied waar de leraren staan, die uitvallen, extracten, en in een array stoppen...

Acties:
  • 0 Henk 'm!

  • dragontje124
  • Registratie: Mei 2009
  • Laatst online: 07-09 17:50
NMe schreef op maandag 12 oktober 2009 @ 22:05:
[...]

:X

Da's meteen wel erg brak. Schrijf het dan zo dat 'ie gewoon kijkt of er updates zijn elke keer dat 'ie gerund wordt en maak er een cronjob voor die zorgt dat het script aangeroepen wordt. :P
nee want je kan namelijk ook je rooster opvragen met dat ding via het command !rooster, en je kan handmatig checken met !check, verder checkt ie automatisch als jij je aanmeld
en commando's sturen gaat moeilijk he als ie uit staat :P
daarnaast wil ik nog andere commando's toevoegen zoals het vergelijken van roosters met elkaar etc.
ook kan je via de bot je rooster aanpassen (het rooster wat in de database van de bot staat).
dus er zit weldegelijk een idee achter.

maar idd zou het op zijn manier wel met een cronjob kunnen, maar als ie de bot fulltime aan wil hebben staan hoeft ie m zeg maar 1 keertje op te starten en dan blijft ie aan.

[ Voor 32% gewijzigd door dragontje124 op 13-10-2009 21:34 ]


Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
dragontje124 schreef op dinsdag 13 oktober 2009 @ 21:29:
[...]

maar idd zou het op zijn manier wel met een cronjob kunnen, maar als ie de bot fulltime aan wil hebben staan hoeft ie m zeg maar 1 keertje op te starten en dan blijft ie aan.
ik gebruik nu een bot van imified, die wil ik dus providen met de geëxtracte informatie uit de roosterwijzigingen... Dus als ik eenmaal de functie kan gebruiken, moet dat dus verwerkt worden in het script van de bot, zodat, als je een commando intypt, hij de leraren weergeeft die uitvallen op die dag :)

Acties:
  • 0 Henk 'm!

  • donquix
  • Registratie: Augustus 2009
  • Laatst online: 17-09 22:55
maarud schreef op dinsdag 13 oktober 2009 @ 21:27:
Een voorbeeld is hier te vinden (van een dag).
Het is een zeeeer interessante manier hoe ze die namen weergeven. In de bron staan namelijk alle docenten en alleen die uitvallen hebben in de <tr> als stijl "display:none;". Misschien kun je daar wat mee. Je kan het stukje waar die docenten in staan eruit filteren en dan omzetten naar een array (met behulp van die string te exploden bij elke tr). Wanneer je dan met preg_match gaat zoeken naar alle regels waar "display:none;" niet in staat houd je een array over waar alle docenten in staan waarvan de lessen vervallen.

Ik hoop dat je hier wat mee kunt.

Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
donquix schreef op dinsdag 13 oktober 2009 @ 21:48:
[...]


Het is een zeeeer interessante manier hoe ze die namen weergeven. In de bron staan namelijk alle docenten en alleen die uitvallen hebben in de <tr> als stijl "display:none;". Misschien kun je daar wat mee. Je kan het stukje waar die docenten in staan eruit filteren en dan omzetten naar een array (met behulp van die string te exploden bij elke tr). Wanneer je dan met preg_match gaat zoeken naar alle regels waar "display:none;" niet in staat houd je een array over waar alle docenten in staan waarvan de lessen vervallen.

Ik hoop dat je hier wat mee kunt.
degene die niet uitvallen hebben display:none, toch? degene die wel uitvallen hebben volgens mij

HTML:
1
2
<tr height=22 style='mso-height-source:userset;height:17.1pt'>
  <td height=22 class=xl7123962 colspan=3 style='height:17.1pt'>de naam</td>

Ik zal eens preg_match bekijken.

Acties:
  • 0 Henk 'm!

  • donquix
  • Registratie: Augustus 2009
  • Laatst online: 17-09 22:55
Het moet trouwens preg_grep zijn, daarmee kun je in een array zoeken met regular expressions en krijg je een array terug waarbij het resultaat positief was

Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
Ik zal eens wat code uitproberen, bedankt voor je tip :)

edit:

ik ben nu aan het spelen met preg_grep, maar het lukt mij nog niet echt...

Wat ik heb gedaan is dit:
PHP:
1
2
3
4
5
<?php
$subject = file_get_contents("tabel.html"); 
$fl_array = preg_grep('[a-z]', $subject);
echo $fl_array
?>


met in tabel.html gewoon 6 namen, waaronder henk. Nu krijg dit als error:
Warning: preg_grep() expects parameter 2 to be array, string given in I:\UsbWebserver\Root\piet.php on line 3

Nu zat ik te zoeken wat een array is (ben echt complete php-n00b, dat begrijp je wel) maar volgens mij moet ik dat helemaal niet hebben? Of wel?

[ Voor 83% gewijzigd door maarud op 13-10-2009 22:28 ]


Acties:
  • 0 Henk 'm!

  • donquix
  • Registratie: Augustus 2009
  • Laatst online: 17-09 22:55
een array is een soort van lijst: array('item1', 'item2', 'item3'). Mijn idee was om een array te exploden op de <tr> zodat je per item in je array een complete rij uit de tabel hebt (dus met de docent).
PHP:
1
2
3
4
5
6
7
8
<?php
$site = file_get_contents('http://www.rooster.nl/rooster.html');    //site binnenhalen
$subject = explode('<tr', $site);                       //site exploden op de tr
$fl_array = preg_grep('display:none', $subject);            //zoeken naar display:none
foreach($fl_array as $f){
    echo $f;                                    //verkregen array echo-en
}
?>

Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
donquix schreef op dinsdag 13 oktober 2009 @ 22:50:
een array is een soort van lijst: array('item1', 'item2', 'item3'). Mijn idee was om een array te exploden op de <tr> zodat je per item in je array een complete rij uit de tabel hebt (dus met de docent).
PHP:
1
2
3
4
5
6
7
8
<?php
$site = file_get_contents('http://www.rooster.nl/rooster.html');    //site binnenhalen
$subject = explode('<tr', $site);                       //site exploden op de tr
$fl_array = preg_grep('display:none', $subject);            //zoeken naar display:none
foreach($fl_array as $f){
    echo $f;                                    //verkregen array echo-en
}
?>
Hmm, met deze code krijg ik een error:
code:
1
2
3
Warning: preg_grep() [function.preg-grep]: Delimiter must not be alphanumeric or backslash in I:\UsbWebserver\Root\piet.php on line 4

Warning: Invalid argument supplied for foreach() in I:\UsbWebserver\Root\piet.php on line 5


Ah, tuurlijk.

Ik heb er even
PHP:
1
2
3
4
5
6
7
8
<?php
$site = file_get_contents('http://roosterpagina);    //site binnenhalen
$subject = explode('<tr', $site);                        //site exploden op de tr
$fl_array = preg_grep('~^display:none~', $subject);            //zoeken naar display:none
foreach($fl_array as $f){
    echo $f;                                    //verkregen array echo-en
}
?>
van gemaakt, maar dan krijg ik een lege pagina terug. Even verder spelen.

Nu ben ik al hier:
Met
PHP:
1
2
3
4
5
6
7
8
<?php
$site = file_get_contents('http://roosters');    //site binnenhalen
$subject = explode('<td height=', $site);                        //site exploden op de tr
$fl_array = preg_grep('~class=xl7123962~', $subject);            //zoeken naar display:none
foreach($fl_array as $f){
    echo $f;                                    //verkregen array echo-en
}
?>


komen alle leraren in een Array. Ik moet alleen de leraren hebben waarbij
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 <tr height=22 style='mso-height-source:userset;height:17.1pt'>

  <td height=22 class=xl7123962 colspan=3 style='height:17.1pt'>De naam 1</td>
  <td class=xl7123962></td>
  <td class=xl7123962></td>
  <td class=xl7123962></td>
  <td class=xl7123962></td>
 </tr>
 <tr height=24 style='mso-height-source:userset;height:18.0pt'>
  <td height=24 class=xl7123962 colspan=2 style='height:18.0pt'>De naam 2</td>

  <td class=xl7123962></td>
  <td class=xl7123962>De naam 3</td>
  <td class=xl7123962></td>
  <td class=xl7123962></td>
  <td class=xl7123962></td>


geldt. Nu dacht ik dat mooi met wat [] haken dat in de preg_grep te doen, maar dan doet de hele functie het niet meer... Dus preg_grep moet alleen de rijen/kolommen eruit pikken waarbij de class xl7123962 is, en waarbij er geen display:none in de style staat... Maar dat lukt mij nog niet echt:
PHP:
1
$fl_array = preg_grep('~[class=xl7123962][style=\'mso-height-source:userset;height:]~', $subject);
dit werkt dus niet...

[ Voor 54% gewijzigd door maarud op 13-10-2009 23:39 ]


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Tsja, dat laatste is natuurlijk geen goede preg expressie. :) Maar ik zou hiervoor gewoon XPath gebruiken, zie bijvoorbeeld dit topic: PHP preg_match.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • dragontje124
  • Registratie: Mei 2009
  • Laatst online: 07-09 17:50
maarud schreef op dinsdag 13 oktober 2009 @ 21:38:
[...]

ik gebruik nu een bot van imified, die wil ik dus providen met de geëxtracte informatie uit de roosterwijzigingen... Dus als ik eenmaal de functie kan gebruiken, moet dat dus verwerkt worden in het script van de bot, zodat, als je een commando intypt, hij de leraren weergeeft die uitvallen op die dag :)
wow dat imified ziet er best interessant uit, ga ik me ook eens in verdiepen

Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
pedorus schreef op woensdag 14 oktober 2009 @ 00:52:
Tsja, dat laatste is natuurlijk geen goede preg expressie. :) Maar ik zou hiervoor gewoon XPath gebruiken, zie bijvoorbeeld dit topic: PHP preg_match.
Ziet er beter uit idd, nu heb ik dit geknutseld met behulp van XPath Tutorial:
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php
$doc = new DOMDocument();
$doc->load('roosters.html');
if (!@$doc->loadHTML($html)) {
    die("invalid HTML");
}
$xpath = new DOMXPath($doc);
foreach($xpath->query('//table/tr/td[@style=\'mso-height-source:userset;]') as $node) {
    echo $node->nodeValue;
}
?>


Maar het regent DOMDocument errors, een greep hieruit:
code:
1
2
3
4
5
6
7
8
9
10
11
Warning: DOMDocument::load() [function.DOMDocument-load]: AttValue: " or ' expected in roosters.html, line: 9 in I:\UsbWebserver\Root\1.php on line 3

Warning: DOMDocument::load() [function.DOMDocument-load]: attributes construct error in roosters.html, line: 9 in I:\UsbWebserver\Root\1.php on line 3

Warning: DOMDocument::load() [function.DOMDocument-load]: Couldn't find end of Start Tag link line 9 in roosters.html, line: 9 in I:\UsbWebserver\Root\1.php on line 3

Warning: DOMDocument::load() [function.DOMDocument-load]: Comment not terminated in roosters.html, line: 453 in I:\UsbWebserver\Root\1.php on line 3

Warning: DOMDocument::load() [function.DOMDocument-load]: Comment not terminated <!---- in oosters.html, line: 453 in I:\UsbWebserver\Root\1.php on line 3

Warning: DOMDocument::load() [function.DOMDocument-load]: Comment not terminated <!------ in roosters.html, line: 453 in I:\UsbWebserver\Root\1.php on line 3

Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
iemand wat tips? Zou het graag af willen maken :) Wat doe ik fout?

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Dit is toch gewoon zelf op te lossen? Ten eerste maken de warnings niets uit; daarom worden die op regel 4 ook onderdrukt met een apenstaartje. Zoals het er nu staat is het echter niet zo nuttig; waar zou $html op regel 4 vandaan moeten komen? Daar heb je iets teveel gekopieerd denk ik. Als je uit XPath query geen resultaten krijgt dan klopt je query waarschijnlijk niet :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 06-09 16:59

CoolGamer

What is it? Dragons?

maarud schreef op donderdag 15 oktober 2009 @ 22:15:
iemand wat tips? Zou het graag af willen maken :) Wat doe ik fout?
Waarom roep je $doc->load('roosters.html'); aan en dan $doc->loadHTML($html). Je zal alleen de loadHTML moeten gebruiken. Of $doc->loadHTMLFile('roosters.html').

Zie documentatie: http://www.php.net/manual/en/domdocument.loadhtmlfile.php

[ Voor 15% gewijzigd door CoolGamer op 15-10-2009 22:35 ]

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸


Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
aha! Ik ga het direct even proberen!

Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
bedankt, het werkt. Maar, ik krijg teveel informatie terug! Ik krijg precies wat ik wil hebben, plus een rij die ik niet wil hebben. Nu heb ik dit geprobeerd, dus met not(@..), maar alsnog kom ik hem tegen in de resultaten...

PHP:
1
2
3
4
5
6
7
8
<?php
$doc = new DOMDocument();
@$doc->loadHTMLFile("roosters.html");
$xpath = new DOMXPath($doc);
foreach($xpath->query('//table/tr[@style=\'mso-height-source:userset;height:17.1pt\'] | //table/tr/td[@class=xl7123962 and @colspan=3 and not(@class=xl7423962)]') as $node) {
    echo $node->nodeValue;
}
?>


toch krijg ik de rijen met class=xl... ?

Ik heb het even vuil opgelost:

PHP:
1
2
3
4
5
$site = file_get_contents("roosters.html");
$site = str_replace('OPMERKINGEN:', 'f', $site);
$site = str_replace('mevr.:', 'mevr.:&nbsp;', $site);
$doc = new DOMDocument();
@$doc->loadHTML($site);


>:) >:)

[ Voor 18% gewijzigd door maarud op 15-10-2009 23:31 ]


Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
hmm, ik kwam ver, maar nu loop ik weer vast... Mijn doel is om de data in een rij weer te geven waarbij de rij begint met bijvoorbeeld 1234...Er mag alleen uit rijen worden gekozen waarbij de tr-hoogte 24 is, en de td-class x[nummer] en de td-colspan NIET de waarde 5 heeft.

Nu had ik dit bedacht:
PHP:
1
2
3
foreach($xpath->query('//table/tr[@height=24] | //table/tr/td[@class=xl7123962 and @colspan!=5]') as $node) {
   echo $node->nodeValue;
}


maar dat wil hij niet doen; hij geeft keurig alles weer wat voldoet, maar ook de td's waarbij de colspan 5 is (zie ook mijn vorige post, zelfde probleem...).

Ook moet de output voldoen aan bepaalde normen. Dit is bijvoorbeeld de output:
1b 4e uur SK Meneer Aart 2b 5e uur Bi Meneer Henk 5b Du Meneer Vier
Nu wil ik dat bijvoorbeeld alleen de informatie wordt weergegeven voor klas 5b, dus ik wil alleen 5b Du Meneer Vier als output krijgen...

Nu dacht ik dat zo op te lossen (beginnetje):
PHP:
1
2
3
4
5
foreach($xpath->query('//table/tr[@height=24] | //table/tr/td[@class=xl7123962 and @colspan!=5]') as $node) {
   if ($node->nodeValue=='5b') {
echo $node->nodeValue
}
}

alleen werkt dat niet (is vrij logisch), en ik heb geen idee hoe ik de output moet comparen aan 5b omdat het één grote brij is van klassen en vakken...

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
maarud schreef op vrijdag 16 oktober 2009 @ 23:37:
Er mag alleen uit rijen worden gekozen waarbij de tr-hoogte 24 is, en de td-class x[nummer] en de td-colspan NIET de waarde 5 heeft.

Nu had ik dit bedacht:
PHP:
1
foreach($xpath->query('//table/tr[@height=24] | //table/tr/td[@class=xl7123962 and @colspan!=5]')
Bedoel je dan niet
PHP:
1
foreach($xpath->query('//table/tr[@height=24]/td[@class="xl7123962" and @colspan!=5]')

?

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 10:53
Nee, in dat geval krijg ik haast niets terug (met mijn query kreeg ik wel alle klassen terug, nu niets meer)

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Er is natuurlijk ook nog een verschil tussen @colspan!=5 and not(@colspan=5). Ik gok dat je de laatste bedoelt. Voor de rest is dit vooral een geval van systematisch te werk gaan, zoals queries per stukje opbouwen en testen enzo. :p

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten

Pagina: 1