Alles tussen de body tags selecteren werkt niet

Pagina: 1
Acties:

  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Ik heb de code die je in de deze topic vindt gebruikt en aangepast voor mijn website:
[topic=295168/1/25]

De code heb ik op de volgende manier aangepast:
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
<?
if(!($myFile=fopen("http://192.168.0.1/x-pc/test.txt","r")))
{
echo "Site stats are currently unavailable, please try again later.";
exit;
}
while(!feof($myFile))
{
// alles in lezen en adden aan mijn $myLine
$myLine=fgets($myFile,1);
}
fclose($myFile);

// alles inlezen tussen deze twee punten
$start="<body>";
$end="</body>";
$start_position=strpos($myLine, $start)-465;
$end_position=strpos($myLine, $end)+strlen($end)-1600;
$length=$end_position-$start_position;
$myLine=substr($myLine, $start_position, $length);

// laat HTML zien
echo $myLine;
?>

Inhoud van test.txt:
code:
1
2
3
<body>
<p>werkt</p>
</body>

Als ik dit php scriptje uitvoer wordt er niets ingevoegd van test.txt. Als ik dan de broncode bekijk van het html bestand waar het dan is ingevoegd staat er niets op de plaats waar dit ingevoegd zou moeten worden.
Het ziet er naar uit dat de string om de een of andere reden leeg is. Maar het bestand test.txt is gewoon te benaderen via diezelfde url.

Iemand een idee wat ik fout doe?

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • Ritch
  • Registratie: December 1999
  • Laatst online: 28-08 17:03
PHP:
1
2
3
4
<?
$start_position=strpos($myLine, $start)-465;
$end_position=strpos($myLine, $end)+strlen($end)-1600;$
?>

Euh waarom die -465 en -1600? aangezien $start_position en $end_position in jouw voorbeeld file niet aan de 465 of 1600 zullen komen, zullen die variabelen een negatieve waarde krijgen en kan het dus niet werken.

  • Speedpete
  • Registratie: December 2001
  • Laatst online: 05-09 11:10

Speedpete

was barman

Quote van PHP.net:
fgets
(PHP 3 <= 3.0.18, PHP 4 >= 4.0.0)

fgets -- Gets line from file pointer
Description

string fgets (int fp [, int length])


Returns a string of up to length - 1 bytes read from the file pointed to by fp. Reading ends when length - 1 bytes have been read, on a newline (which is included in the return value), or on EOF (whichever comes first). If no length is specified, the length defaults to 1k, or 1024 bytes.
Je haalt alleen de eerste regel binnen

[edit]
Oeps, te snel gelezen
code:
1
2
while(!feof($myFile)){// alles in lezen en adden aan mijn $myLine
$myLine=fgets($myFile,1);}

je haalt steeds 1 teken binnen, maak er eens van:
code:
1
2
3
$myLine = "";
while(!feof($myFile)){// alles in lezen en adden aan mijn $myLine
$myLine +=fgets($myFile,1);}

Dat zou ik zo 1-2-3 zeggen...

Object-oriented programming offers a sustainable way to write spaghetti code | Hoe vleugels wel werken.


  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Op zaterdag 22 december 2001 19:22 schreef Speedpete het volgende:
Quote van PHP.net:
[..]

Je haalt alleen de eerste regel binnen
Ik heb die pagina waar je naar verwijsde bekeken.
En de code tot het volgende aangepast:
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
<?
if(!($myFile=fopen("http://192.168.0.1/x-pc/test.txt","r")))
{
echo "Site stats are currently unavailable, please try again later.";
exit;
}
while(!feof($myFile))
{
// alles in lezen en adden aan mijn $myLine
$myLine=fgets($myFile,4096);
}
fclose($myFile);

// alles inlezen tussen deze twee punten
$start="<body>";
$end="</body>";
$start_position=strpos($myLine, $start);
$end_position=strpos($myLine, $end)+strlen($end);
$length=$end_position-$start_position;
$myLine=substr($myLine, $start_position, $length);

// laat HTML zien
echo $myLine;
?>

Ik heb dus by de regel $myLine=fgets($myFile,4096); de 1 in 4096 verandert. De 1 die er stond betekende dat hij maar een teken deed inlezen.

Nu krijg ik wel een output van mijn script alleen is deze output </body> en niet <p>werkt</p>. Dus ergens zit er nog iets te misselijken.

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • Speedpete
  • Registratie: December 2001
  • Laatst online: 05-09 11:10

Speedpete

was barman

Damn, te laat geedit.
Op zaterdag 22 december 2001 19:34 schreef Excrusiator het volgende:
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
<?
if(!($myFile=fopen("http://192.168.0.1/x-pc/test.txt","r")))
{
echo "Site stats are currently unavailable, please try again later.";
exit;
}
while(!feof($myFile))
{
// alles in lezen en adden aan mijn $myLine
$myLine=fgets($myFile,4096);
}
fclose($myFile);

// alles inlezen tussen deze twee punten
$start="<body>";
$end="</body>";
$start_position=strpos($myLine, $start);
$end_position=strpos($myLine, $end)+strlen($end);
$length=$end_position-$start_position;
$myLine=substr($myLine, $start_position, $length);

// laat HTML zien
echo $myLine;
?>
Maak er eens van:
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
<?
if(!($myFile=fopen("http://192.168.0.1/x-pc/test.txt","r")))
{
echo "Site stats are currently unavailable, please try again later.";
exit;
}
while(!feof($myFile))
{
// alles in lezen en adden aan mijn $myLine
$myLine=fgets($myFile,4096);
}
fclose($myFile);

echo "<TEXTAREA COLS='50' ROWS=5'>$myLine</TEXTAREA";

// alles inlezen tussen deze twee punten
$start="<body>";
$end="</body>";
$start_position=strpos($myLine, $start);
$end_position=strpos($myLine, $end)+strlen($end);

echo "Start: $start<BR>End: $end<BR>";

$length=$end_position-$start_position;

echo "Lengte: $length<BR>";

$myLine=substr($myLine, $start_position, $length);

// laat HTML zien
echo $myLine;
?>

Dan zie je wat PHP doet... zie je misschien ook eerder de fout.

Object-oriented programming offers a sustainable way to write spaghetti code | Hoe vleugels wel werken.


  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Op zaterdag 22 december 2001 19:22 schreef Speedpete het volgende:
Quote van PHP.net:
[..]

Je haalt alleen de eerste regel binnen

[edit]
Oeps, te snel gelezen
code:
1
2
while(!feof($myFile)){// alles in lezen en adden aan mijn $myLine
$myLine=fgets($myFile,1);}

je haalt steeds 1 teken binnen, maak er eens van:
code:
1
2
3
$myLine = "";
while(!feof($myFile)){// alles in lezen en adden aan mijn $myLine
$myLine +=fgets($myFile,1);}

Dat zou ik zo 1-2-3 zeggen...
Als ik dit verander krijg ik opeens de output O :?

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • Speedpete
  • Registratie: December 2001
  • Laatst online: 05-09 11:10

Speedpete

was barman

Als ik dit verander krijg ik opeens de output O
Dan zal hij de char-waarden wel optellen, of $myline als getal zien. maar check ff m'n eerdere bericht...

Object-oriented programming offers a sustainable way to write spaghetti code | Hoe vleugels wel werken.


  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
We waren daarnet een beetje langs elkaar door aan het posten, ben het atm aan het checken. :)

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
uitkomst van de veranderingen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
</body></TEXTAREAStart: <body><BR>End: </body><BR>Lengte: 7<BR></body>


</tr>
</td>
</table>

</td>
</table>


</body>
</html>

Ik ga nog ff verder spelen met jouw code. Ik zie nu juist niet wat hij doet/niet doet. :)

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Ik heb de code regel voor regel nagelopen met de php handleiding ernaast maar ik kon niets vinden wat niet klopt. Of zie ik nu stomweg iets over het hoofd?

nog eens 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
<?
if(!($myFile=fopen("http://www.x-pc.info/webstat/index.html","r")))
{
echo "Site stats are currently unavailable, please try again later.";
exit;
}
while(!feof($myFile))
{
// alles in lezen en adden aan mijn $myLine
$myLine=fgets($myFile,10240);
}
fclose($myFile);

// alles inlezen tussen deze twee punten
$start="<BODY";
$end="</BODY>";
$start_position=strpos($myLine, $start);
$end_position=strpos($myLine, $end)+strlen($end);
$length=$end_position-$start_position;
$myLine=substr($myLine, $start_position, $length);

// laat HTML zien
echo $myLine;
?>

Er is een ding wat mij wel opvalt, als ik test.txt gebruik om dit scriptje te testen wordt </body> ingevoegd in mijn html bestand. Als ik het bestand gebruik waar mijn statistieken instaan wordt er niets ingevoegd...

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • Speedpete
  • Registratie: December 2001
  • Laatst online: 05-09 11:10

Speedpete

was barman

Hij kan zowel start als einde niet vinden valt mij op... Hoofdlettergebruik gecontroleerd enzo?

Ik zie het namelijk ook niet..

Object-oriented programming offers a sustainable way to write spaghetti code | Hoe vleugels wel werken.


  • TheMrH
  • Registratie: April 2000
  • Laatst online: 01-09 22:45
PHP:
1
2
3
4
<?
// alles in lezen en adden aan mijn $myLine
$myLine.=fgets($myFile,10240);
?>

Dus ipv = een .=. Je las namelijk wel alles in, maar overschreef het iedere keer met de volgende regel....

The box said 'requires Windows 95 or better', so I installed Linux...


  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Op zondag 23 december 2001 09:39 schreef TheMrH het volgende:
PHP:
1
2
3
4
<?
// alles in lezen en adden aan mijn $myLine
$myLine.=fgets($myFile,10240);
?>

Dus ipv = een .=. Je las namelijk wel alles in, maar overschreef het iedere keer met de volgende regel....
Godver, ik wist dat het iets simpels moest zijn...
Hij werkt nu, zitten nog wel een paar bugs in maar die kan ik waarschijnlijk wegwerken met een str_replace functie (zit al een voorbeeld in bij de originele code).
Dus als het goed is moet het nu gaan werken. :)
Ik post wel de link als alles werkt.

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL


  • Excrusiator
  • Registratie: Juli 2000
  • Laatst online: 18-02 20:19
Ok, na wat strubbelingen en wat gerotzooi om het goed werkend te krijgen (en een paar vloeken omdat er iets misgaat, maarja wat... ;)) is hier dan eindelijk het werkend resultaat:
http://www.x-pc.info/index.php?func=stats

En voor diegene die er interesse in hebben is hier de werkende 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
28
29
<?
if(!($myFile=fopen("http://www.x-pc.info/webstat/index.html","r")))
{
echo "Site stats are currently unavailable, please try again later.";
exit;
}
while(!feof($myFile))
{
// alles in lezen en adden aan mijn $myLine
$myLine.=fgets($myFile,25600);
}
fclose($myFile);

// alles inlezen tussen deze twee punten
$start="<H2>";
$end="<!-- Webalizer Version 2.01-06 (Mod: 17-Oct-2000) -->";
    $vervang = eregi_replace("[img]\"usage.png\"[/img]<P>",
    "[img]\"http://www.x-pc.info/webstat/usage.png\"[/img]<P>",
$myLine);
    stripslashes($vervang);
    $myLine = $vervang;
$start_position=strpos($myLine, $start);
$end_position=strpos($myLine, $end)+strlen($end);
$length=$end_position-$start_position;
$myLine=substr($myLine, $start_position, $length);

// laat HTML zien
echo $myLine;
?>

<HunterPro> HAL: is Excru intelligent?
<HAL> HunterPro: Hijs weer lekker intelligent.
* Excru aait HAL

Pagina: 1