[PHP] Schrijven van HTML-bestand

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • squaddie
  • Registratie: Februari 2000
  • Laatst online: 15:18
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:
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.


Acties:
  • 0 Henk 'm!

  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 16-09 09:45
Wat ik even niet begrijp is waarom je niet die HTML code die er boven en eronder moet komen niet gewoon in je PHP code neerzet :?

Je kan toch:
code:
1
2
3
4
5
6
7
Hier al je html-code

<?
Hier je PHP code
?>

en hier weer je html-code

En dit allemaal in 1 xxx.php bestand??

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


Acties:
  • 0 Henk 'm!

  • Dr. Malsain
  • Registratie: Juli 2002
  • Laatst online: 14-02-2023
Ik denk dat er iets mis gaat met de notatie van het in te voegen stuk tekst. Er staan namelijk redelijk veel slashes in. Voor de zekerheid dus even goed kijken hoe de string is samengesteld.

Acties:
  • 0 Henk 'm!

  • squaddie
  • Registratie: Februari 2000
  • Laatst online: 15:18
Probleem gevonden, op een of andere manier vind de fwrite() de \n's niet leuk in de string. Door elke regel een apart in de variable te zetten en dan weg te schrijven gaat wel goed, ook al staat in de fwrite de toevoeging ."\n"

Waarom het dan alleen bij de laatste \n fout gaat blijft voor mij een raadsel.

@polderdijk, dit script is uitsluitend bedoelt om handwerk te automatiseren, vandaar dat dit script aanpassingen maakt in een HTML-only-pagina. De eisen van de opdrachtgever waren dat ik het snel (dus goedkoop) kan programmeren en dat zij de vrijheid hebben om nog afwijkende dingen erop te kunnen zetten. Ik denk dat deze oplossing hier het beste aan voldoet.

[ Voor 4% gewijzigd door squaddie op 16-04-2004 16:16 ]

There are never enough hours in a day, but always too many days before saturday.


Acties:
  • 0 Henk 'm!

  • jpwaag
  • Registratie: September 2003
  • Laatst online: 16:05
misschien kan je nog \r\n proberen.

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Polderdijk schreef op 16 april 2004 @ 13:42:
Wat ik even niet begrijp is waarom je niet die HTML code die er boven en eronder moet komen niet gewoon in je PHP code neerzet :?

Je kan toch:
code:
1
2
3
4
5
6
7
Hier al je html-code

<?
Hier je PHP code
?>

en hier weer je html-code

En dit allemaal in 1 xxx.php bestand??
Nog nooit van scheiding van Data en Opmaak gehoord?

Noushka's Magnificent Dream | Unity

Pagina: 1