[PHP]HTML van een bestand veranderen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste tweakers,

Ik zit met het volgende probleem. Ik heb van internet een tv gids wat iedere week wordt geupdate door hun. Alleen het probleem is dat de tijden die daar op staan 3 uur achter lopen.
Ik wil nu dus iets maken die tijden 3 uur vooruitzet.

Ik ben een beetje begonnen met klooien maar ik heb geen flauw idee hoe ik dat kan doen.

Ik kan het desbetreffende html bestand inlezen met file_get_contents(). Maar weet daarna niet hoe ik de tijden 3 uur vooruit kan zetten

Het gaat om de volgende site
http://www.eter.tv/eng/pr...t_version/e_Atvsput.shtml

Acties:
  • 0 Henk 'm!

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
Verwijderd schreef op 03 mei 2004 @ 12:16:
Ik kan het desbetreffende html bestand inlezen met file_get_contents(). Maar weet daarna niet hoe ik de tijden 3 uur vooruit kan zetten
met een reguliere expressie kun je op tijden matchen, vervolgens kun je met die tijden gaan rekenen en overal 3 uur bij optellen...

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb eigenlijk nog nooit met reg exp.
Kun je misschien zeggen hoe ik alleen de tijden eruit moet halen.
Ik denk dan aan zoeken op cijfers, maar dat gaat niet werken aangezien ook in de naam zelf ook cijfers kunnen zitten.

edit:
hmm, denk je dat het werkt als ik een reg ex maak die zoekt naar xx"."xx waarbij xx een int voorstelt en de punt moet letterlijk genomen worden.
Zoiets?

[ Voor 28% gewijzigd door Verwijderd op 03-05-2004 12:30 ]


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Wellicht kun je iets met de Regular Expression FAQ? Daarin wordt uitgelegd hoe die dingen werken.

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Wil je echt de originele HTML behouden en daarin de tijden veranderen? :? Gewoonlijk doe je zeker met 'gejatte' data toch zeker alleen de data eruittrekken en deze reformatten tot je eigen design...

Maar zoek eens op preg_replace_callback op www.php.net, doet wonderen ;)

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
Verwijderd schreef op 03 mei 2004 @ 12:29:
hmm, denk je dat het werkt als ik een reg ex maak die zoekt naar xx"."xx waarbij xx een int voorstelt en de punt moet letterlijk genomen worden.
Zoiets?
nee, want als ik naar je pagina kijk dan zie ik

code:
1
2
 23, 3
    Forbidden Medicine


dergelijke waarden zul je dus eerst moeten vervangen (of matchen met je regexp)...

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


Acties:
  • 0 Henk 'm!

  • phYzar
  • Registratie: November 2001
  • Laatst online: 13:33
Je hoeft niet alleen de cijfers te herkennen, een grotere regel met daarin de cijfers kan ook.
De pagina is een grote tabel. De tijd staat steeds in de eerste cel van een rij:

code:
1
ti:jd </font></b></CENTER></TD>

dit stukje code staat achter elke tijd. Hier zou je dus bijvoorbeeld op kunnen matchen.

Acties:
  • 0 Henk 'm!

  • sjoerdb2
  • Registratie: Juli 2001
  • Laatst online: 09-05 09:52
PHP:
1
2
3
4
5
$file = fopen("http://www.eter.tv/eng/programs/print_version/e_Atvsput.shtml","r");
$contents = fread($file,100000);
fclose($file);

echo ereg_replace("([0-9]{2})\.([0-9]{2})","\\1:\\2",$contents);


zelf even verder puzzelen...

[ Voor 31% gewijzigd door sjoerdb2 op 03-05-2004 12:38 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
sjoerdb schreef op 03 mei 2004 @ 12:37:
PHP:
1
2
3
4
5
$file = fopen("http://www.eter.tv/eng/programs/print_version/e_Atvsput.shtml","r");
$contents = fread($file,100000);
fclose($file);

echo ereg_replace("([0-9]{2})\.([0-9]{2})","\\1:\\2",$contents);


zelf even verder puzzelen...
hmm, thnx, maar dan nog 1 vraag het eerste deel van je reg ex volg ik, maar de replacement snap ik dan niet. wat doet \\1:\\2 :)

@phYzar
dank je, had ik nog niet opgemerkt |:( ik zal dat toevoegen aan hetgeen wat sjoerd me geeft.

@curry684
mjah, wat jij zegt kan ook. Maar het belangrijkste op dit moment is om de tijden goed te krijgen :) daarna kan ik er alles mee doen

dank u allen _/-\o_

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

sjoerdb schreef op 03 mei 2004 @ 12:37:
PHP:
1
2
3
4
5
$file = fopen("http://www.eter.tv/eng/programs/print_version/e_Atvsput.shtml","r");
$contents = fread($file,100000);
fclose($file);

echo ereg_replace("([0-9]{2})\.([0-9]{2})","\\1:\\2",$contents);


zelf even verder puzzelen...
PHP:
1
2
3
4
5
$file = fopen("http://www.eter.tv/eng/programs/print_version/e_Atvsput.shtml","r");
$contents = fread($file,100000);
fclose($file);

echo ereg_replace("([0-2]?[0-9])\.([0-5][0-9])","\\1:\\2",$contents);

Die lijkt me al iets minder foutgevoelig. ;)

[ Voor 28% gewijzigd door NMe op 03-05-2004 13:21 ]

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

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

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 03 mei 2004 @ 12:52:
[...]

hmm, thnx, maar dan nog 1 vraag het eerste deel van je reg ex volg ik, maar de replacement snap ik dan niet. wat doet \\1:\\2 :)
Een beetje eigen inzet mag wel hoor, dit is allemaal manual werk. :)
http://nl2.php.net/preg_replace
http://nl2.php.net/ereg_replace

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

Verwijderd

Topicstarter
NMe84 schreef op 03 mei 2004 @ 12:57:
[...]

Een beetje eigen inzet mag wel hoor, dit is allemaal manual werk. :)
http://nl2.php.net/preg_replace
http://nl2.php.net/ereg_replace
dat had ik al doorgespit. Daar wordt het idd ook gebruikt, alleen er staat nergens uitgelegd hoe.

Daar wordt als voorbeeld gegeven:

PHP:
1
2
3
4
5
<?php
$string = "This is a test";
echo ereg_replace("( )is", "\\1was", $string);
echo ereg_replace("(( )is)", "\\2was", $string);
?>


alleen nu snap ik niet waar die 1 en waar die 2 goed voor zijn? :)
/me gaat al googlen

[ Voor 8% gewijzigd door Verwijderd op 03-05-2004 13:04 ]


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 03 mei 2004 @ 13:04:
[...]

dat had ik al doorgespit. Daar wordt het idd ook gebruikt, alleen er staat nergens uitgelegd hoe.

Daar wordt als voorbeeld gegeven:

PHP:
1
2
3
4
5
<?php
$string = "This is a test";
echo ereg_replace("( )is", "\\1was", $string);
echo ereg_replace("(( )is)", "\\2was", $string);
?>


alleen nu snap ik niet waar die 1 en waar die 2 goed voor zijn? :)
/me gaat al googlen
Bij hoge uitzondering, en omdat ik me verveel (:P) een kort lesje replace met regexps:
\\0 of $0 matcht je hele pattern, dus als je het hele patroon wilt vervangen door iets anders gebruik je dat.
\\1 of $1 vervangt de eerste groep in je pattern, dus in dit pattern: ([0-9]+).([0-9]+) is de eerste ([0-9]+) gelijk aan \\1 of $1, en het tweede tussen haakjes is dan weer toegankelijk via \\2 en $2. Je kan \\0 tot \\9 gebruiken als ik me niet vergis.
In het voorbeeld wat je nu zelf noemt verandert alle tekst waar het woord "is" achter staat in diezelfde tekst gevolgd door "was".

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

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 12:57

Robtimus

me Robtimus no like you

NMe84 schreef op 03 mei 2004 @ 12:54:
[...]

PHP:
1
2
3
4
5
$file = fopen("http://www.eter.tv/eng/programs/print_version/e_Atvsput.shtml","r");
$contents = fread($file,100000);
fclose($file);

echo ereg_replace("([0-1]?[0-9]{1})\.([0-5]{1}[0-9]{1})","\\1:\\2",$contents);

Die lijkt me al iets minder foutgevoelig. ;)
Haal dan meteen die {1} weg, die zijn dan overbodig geworden he? En wat doe je met 23:xx?

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

IceManX schreef op 03 mei 2004 @ 13:14:
[...]
Haal dan meteen die {1} weg, die zijn dan overbodig geworden he? En wat doe je met 23:xx?
Whoops, post aangepast. die [0-1] was een tikfout, die {1} een denkfout. :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!

Verwijderd

Topicstarter
dank jullie wel, ik heb het nu als volgt opgelost :)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php

  if(!isset($_GET['gmt']) || !is_numeric($_GET['gmt']))
    $gmt_x = 0;
  elseif(isset($_GET['gmt']) && is_numeric($_GET['gmt']))
    $gmt_x = $_GET['gmt'];

  $program = "program.html";
  $content =  file_get_contents($program);

  $pattern = "|(\d{2}).(\d{2})[ ](<\/font>)|";
  function add_x_hours($match)
  {
    global $gmt_x;
    $match[1] += $gmt_x;
    $match[1] %= 24;
    $tijd = $match[1].".".$match[2];
    return $tijd;
  }
  echo preg_replace_callback($pattern, "add_x_hours", $content);
?>

Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 12:57

Robtimus

me Robtimus no like you

Verwijderd schreef op 03 mei 2004 @ 16:59:
dank jullie wel, ik heb het nu als volgt opgelost :)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php

  if(!isset($_GET['gmt']) || !is_numeric($_GET['gmt']))
    $gmt_x = 0;
  elseif(isset($_GET['gmt']) && is_numeric($_GET['gmt']))
    $gmt_x = $_GET['gmt'];

  $program = "program.html";
  $content =  file_get_contents($program);

  $pattern = "|(\d{2}).(\d{2})[ ](<\/font>)|";
  function add_x_hours($match)
  {
    global $gmt_x;
    $match[1] += $gmt_x;
    $match[1] %= 24;
    $tijd = $match[1].".".$match[2];
    return $tijd;
  }
  echo preg_replace_callback($pattern, "add_x_hours", $content);
?>
Van die elseif kun je gewoon een else maken, want:
!A || !B ==!(A && B) (de Morgan)

De guard van de elseif zal dus altijd true zijn als ie daar aankomt, anders was het door de guard van de if al afgevangen.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
mja maar als het geen van de 2 is moet er een foutmelding komen, heb ik daar nog niet, maar dat moet nog komen :)

Sterker nog, het is er al, alleen nog niet in die script
Pagina: 1