Ik heb een bestaande HTML-bestand waarin een stukkie moeten toegevoegt, dit doe ik door het orginele bestand in een array te zetten met file(). Daarna regel voor regel weg te schrijven naar een tijdelijk nieuw bestand tot ik op het punt ben waar de nieuwe text moet komen dan schrijf ik de nieuwe text naar het tijdelijk bestand en daarna de rest van het orginele bestand weg te schrijven naar het tijdelijke bestand.
De code werkt want ik krijg een nieuw bestand met orignele inhoud + het ingevoegde stukkie, echter van het ingevoegde stukkie vallen de laatste paar characters vallen weg.
Een knip&plak van het betreffende stuk code:
* De echo's staan erin voor debugging.
* $content is in werkelijkheid een string van ruim 300 chars met enkele variablen erin verwerkt, maar de heb alleen het essenciele laten staan, anders wordt het veel scrollen.
* Dat 123456789 hoort er officieel niet in thuis maar laat goed zien wat het probleem is.
Dit is de output naar het scherm:
Dit is het resultaat in het tijdelijke bestand:
Heb het volgende geprobeert, zonder positief resultaat:
* Stringlengte berekenen en meegeven aan fwrite()
* Zelf stringlengte meegeven fwrite() die een waarde heeft die gelijk of veel groter dan werkelijke stringlengte
* De $content in meerdere stukken opdelen en deze na elkaar via fwrite() wegschrijven
Maak gebruik van PHP v4.3.5 en zo ver ik heb kunnen vinden is er geen bekende bug met de fwrite-functie.
Samenvattend: ikke niet (meer) snap waarom dit niet werkt, zoals ik het verwachtte.
De code werkt want ik krijg een nieuw bestand met orignele inhoud + het ingevoegde stukkie, echter van het ingevoegde stukkie vallen de laatste paar characters vallen weg.
Een knip&plak van het betreffende stuk 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
| $orginalFile = array(); $orginalFile = file("menu.html","r"); if($orginalFile) { $tempFile = fopen("menuNew.html","wt"); $totalLines = count($orginalFile); for($i = 0;$i < $totalLines;$i++) { if (strstr($orginalFile[$i], "<!-- Begin -->")) { fwrite($tempFile,rtrim($orginalFile[$i])."\n"); echo rtrim($orginalFile[$i])."\n"; $total = countDir($source); $content = "<TR>\n\t<TD>link + plaatje</TD>\n\t<TD>link + tekst</TD>\n</TR>\n123456789"; fwrite($tempFile,$content."\n"); echo $content."\n"; } else { fwrite($tempFile,rtrim($orginalFile[$i])."\n"); echo rtrim($orginalFile[$i])."\n"; } } fclose($tempFile); } |
* De echo's staan erin voor debugging.
* $content is in werkelijkheid een string van ruim 300 chars met enkele variablen erin verwerkt, maar de heb alleen het essenciele laten staan, anders wordt het veel scrollen.
* Dat 123456789 hoort er officieel niet in thuis maar laat goed zien wat het probleem is.
Dit is de output naar het scherm:
code:
1
2
3
4
5
6
7
8
9
10
11
| <table width="70%"> <!-- Begin --> <TR> <TD>link + plaatje</TD> <TD>link + tekst</TD> </TR> 123456789 <TR> <TD>link + plaatje</TD> <TD>link + tekst</TD> </TR> |
Dit is het resultaat in het tijdelijke bestand:
code:
1
2
3
4
5
6
7
8
9
10
| <table width="70%"> <!-- Begin --> <TR> <TD>link + plaatje</TD> <TD>link + tekst</TD> </TR> 123456<TR> <TD>link + plaatje</TD> <TD>link + tekst</TD> </TR> |
Heb het volgende geprobeert, zonder positief resultaat:
* Stringlengte berekenen en meegeven aan fwrite()
* Zelf stringlengte meegeven fwrite() die een waarde heeft die gelijk of veel groter dan werkelijke stringlengte
* De $content in meerdere stukken opdelen en deze na elkaar via fwrite() wegschrijven
Maak gebruik van PHP v4.3.5 en zo ver ik heb kunnen vinden is er geen bekende bug met de fwrite-functie.
Samenvattend: ikke niet (meer) snap waarom dit niet werkt, zoals ik het verwachtte.
There are never enough hours in a day, but always too many days before saturday.