Avatar billede bb_maze Nybegynder
21. januar 2004 - 21:06 Der er 14 kommentarer og
1 løsning

<br> tegn driller

Hejsa!

Jeg sidder og leger med et script, hvor man kan skrive til en txt fil.

Når man så har skrevet til filen skal den herefter vise sig på siden, men også i submitboxen, så man kan gå ind og rette i den...

Men mit problem er at den på siden skriver teksten som den skal, men i submit boxen tager den <br> m.m. med...

Er der nogle der kan hjælpe? På forhånd tak!

HYGGE
Avatar billede martineriksen Nybegynder
21. januar 2004 - 21:18 #1
Kør nedestående på den variabel du benytter som value til din submit boks.

$string = strip_tags($string, '<br>');
Avatar billede bb_maze Nybegynder
21. januar 2004 - 21:23 #2
Mange tak! Det var effektivt ;-)

HYGGE
Avatar billede bb_maze Nybegynder
21. januar 2004 - 21:27 #3
Hmmm.. nye problemer... Nu skriver den <br /> i stedet for <br> som den skrev før... Kan du hjælpe igen?

HYGGE
Avatar billede martineriksen Nybegynder
21. januar 2004 - 21:28 #4
Er der et eller andet sted, hvor du gør brug af funktionen nl2br?
Avatar billede bb_maze Nybegynder
21. januar 2004 - 21:29 #5
Ja:
<?
if(isset($_POST["tekst"])) {
    $fil = fopen("text.txt", "w");
    fwrite($fil, nl2br($_POST["tekst"]));
    fclose($fil);
}

HYGGE
Avatar billede martineriksen Nybegynder
21. januar 2004 - 21:34 #6
Fjerne strip_tags som jeg først svarede dig, fjerne der hvor du benytter dig af nl2br.

Brug derimod nl2br på dataen lige inden du viser den. Normal praksis er, at man ikke har benyttet sig af nl2br på den data man har gemt, men derimod på den data man viser. Sørg så samtidigt for, at den variabel du benytter til selve siden så ikke også er den samme som den du bruger som værdien til  din submit boks.
Avatar billede bb_maze Nybegynder
21. januar 2004 - 21:37 #7
Når jeg viser teksten, og når jeg skal have den ind i submitboxen bruger jeg bare include(), hvad skal jeg så gøre?

Kan du forklare hvad nl2br egentlig gør?

HYGGE
Avatar billede martineriksen Nybegynder
21. januar 2004 - 21:55 #8
Når du f.eks. har et tekstarea, som f.eks. den vi skriver vores kommentarer i lige nu, og du trykker retur for at komme på en ny linie, bliver der lagt et EOL(End Of Line) character ind, typisk også vist som "\n". Man når du skriver normalt kan du ikke se den, udover du selvfølgelig er på en ny linie.

Når du så medtager din string, ved enten den kommer fra en fil, eller fra form, så kan du køre den igennem nl2br, hvor hver eneste af disse \n vil blive konvereteret til en <br/>. Bruger du en PHP v. fra før 4.0.5, så vil den dog erstatte dem istedet med en <br> som er ganske almindelig. <br/> er nemlig XHTML.

Til dit problem:
SÅ vidt jeg umiddelbart kan se, så tager du den tekst du modtager fra dit form, og gemmer i en ganske alm. fil, men hvis jeg var dig, vil jeg ikke hente din tekst fil ind igen med include, derimod gøre brug af fread(), så du har noget kode der ligner noget i stil med:

$filename = "text.txt";
$handle = fopen($filename, "rb");
$content = fread($handle, filesize($filename));
fclose($handle);

$content variablen vil så indeholde teksten fra din fil, og når du så skal vise dette indhold, kan du køøre nl2br() på den.

Hvis jeg var dig, vil jeg overveje at benytte mig af en database til at gemme dataen i, da det er væsentlig nemmere at håndtere data på denne måde.
Avatar billede bb_maze Nybegynder
21. januar 2004 - 22:00 #9
For det første: Tak for forklaringen, den var god!

Kan ikke lige umiddelbart få det du skrev til at virke, men her er det jeg bruger nu:
<?
if(isset($_POST["tekst"])) {
    $fil = fopen("text.txt", "w");
    fwrite($fil, ($_POST["tekst"]));
    fclose($fil);
}

?>

<form method=post action="<? echo $_SERVER["PHP_SELF"];?>">
Skriv her:
  <textarea name="tekst" rows="10" cols="20"><? include("text.txt")?></textarea>
  <br>
<input type="submit" name="s1" value="Skriv til fil.">
</form>
<br>
<?
include("text.txt");
?>

HYGGE

P.S. Du får altså lige en sjat point mere når vi en gang er færdige!
Avatar billede martineriksen Nybegynder
21. januar 2004 - 22:29 #10
Jeg har skrevet lidt om i din kode, og opdagede samtidigt at jeg har problemer i min installation vedrørende at kunne åbne en fil til at kunne både læse og skrive samtidigt, så derfor lukkes forbindelsen til filen og bliver åbnet igen, eller burde man kunne åbne den med "r+" eller r+b hvis installationen er på windows:

<?php
$filename = "text.txt";


if(isset($_POST["tekst"])) {
    $fil = fopen($filename, "w");
    fwrite($fil, ($_POST["tekst"]));
    fclose($fil);
}

$fil = fopen($filename, "r");
$indhold = fread($fil, filesize($filename));
fclose($fil);

?>

<form method=post action="<? echo $_SERVER["PHP_SELF"];?>">
Skriv her:
  <textarea name="tekst" rows="10" cols="20"><?php echo $indhold; ?></textarea>
  <br>
<input type="submit" name="s1" value="Skriv til fil.">
</form>
<br>
<?php
echo nl2br($indhold);
?>
Avatar billede bb_maze Nybegynder
21. januar 2004 - 22:32 #11
Ja, så virker det! Mange mange tak! Nu vil jeg kigge lidt på koden så jeg også kan lære lidt af det ;-) Mange mange tak igen... Hvor mange point vil du ha?

HYGGE
Avatar billede martineriksen Nybegynder
21. januar 2004 - 22:33 #12
Hvad angår de ekstra point, bare behold dem, det betyder ikke noget.
Avatar billede bb_maze Nybegynder
21. januar 2004 - 22:33 #13
Sikker? For selvom det måske har været let for dig, har det hjulpet mig en del! Hvad så med lidt god karma? ;-)

HYGGE
Avatar billede martineriksen Nybegynder
21. januar 2004 - 22:34 #14
Ok...så giv mig lidt karma....det kan jeg lade mig overtale til :)
Avatar billede bb_maze Nybegynder
21. januar 2004 - 22:39 #15
Hehe.. Det var godt ;-)

HYGGE
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester