Avatar billede manon Nybegynder
13. juli 2003 - 15:45 Der er 26 kommentarer og
1 løsning

ÆØÅ i kildekode/txt som hentes vha. include

Hej E

Jeg har nogle php websider som henter tekst fra nogle filer.txt vha. include.

Denne tekst i disse txt.dokumenter er skrevet på dansk og der bruges ÆØÅ.

Umiddelbart er det jo fint nok hvis det er et dansk styresystem/PC der kigger på siden.

Men hvad sker der med ÆØÅ hvis PC´en/styresystemet er frransk eller engelsk?

Burde man så bruge "æ" - "ø" - "å"  istedet??


På forhånd tak for hjælpen.
Vh\M
Avatar billede jpvj Nybegynder
13. juli 2003 - 15:47 #1
Hvis du antiver META tagen for karaktersættet, så burde HTML outputtet være helt fint.

JP
Avatar billede jpvj Nybegynder
13. juli 2003 - 15:48 #2
<META http-equiv="content-type" content="text/html; charset=ISO-8859-1">

insættes i <HEAD>
Avatar billede manon Nybegynder
13. juli 2003 - 15:54 #3
jpvi >>

Det fatter jeg intet af hvad du siger *s*
mener du at en fransk hhv. engelsk PV/styresystem gengiver ÆØÅ som ÆØÅ hvis denne <META http-equiv="content-type" content="text/html; charset=ISO-8859-1"> er sat ind i <head> ??

Eller hvordan vil ÆØÅ se ud?

Teksten kommer fra et TXT dokument og det er skrevet på pæredansk. Men det betyder måske ikke noget?
Avatar billede ohmish Nybegynder
13. juli 2003 - 18:12 #4
man burde altid bruge "&aelig;" - "&oslash;" - "&aring;"  istedet.
Avatar billede detox Nybegynder
14. juli 2003 - 00:13 #5
Du kan jo evt. benytte dig af den udmærkede funktion:
$str = 'Æ Ø Å';
$new = htmlentities($str);
print $new;
Vil ændre 'Æ Ø Å' til '&AElig; &Oslash; &Aring;'
Avatar billede manon Nybegynder
14. juli 2003 - 01:25 #6
ohmish >>
ja, det har du ret i - altså fo sådan nogle kodehoveder som vi er - men for den alm. bruger, så er det ikke logik.
Avatar billede manon Nybegynder
14. juli 2003 - 01:27 #7
detox >>

kan ikke bruges, så jeg kun bruger en <? include ("tekst.txt"); ?> og der står alm. tekst i den TXT fil. Det vil ligeså være en alm. bruger der skriver og redigeerre i denne tekst fil og han har ikek forstand på at skrive andet en alm. æøå.
Avatar billede detox Nybegynder
14. juli 2003 - 05:46 #8
Hvad så med at hente filen sådan:
$tekst = file_get_contents('tekst.txt');
$new = htmlentities($tekst);
Avatar billede raz0 Nybegynder
15. juli 2003 - 17:18 #9
Hvis der er andre brugere der kan ændre i filens indhold skal du ALDRIG ALDRIG nogensinde bruge include() medmindre du stoler 100% på dem. De kan jo bruge en hvilken som helst PHP funktion så. F.eks. unlink()
Avatar billede manon Nybegynder
15. juli 2003 - 17:57 #10
raz0 >>

Det er netop til min svigerfar som INTET forstand har på php eller HTML, men derimod kan han skrive i et notepad.txt dokument og det eneste han skal lære at bruge, er <br> og såå bare skrive/ændre/tilføje den tekst han nu ønsker og på den måde er min ryg fri og jeg behøver ikke hele tiden at hjælpe manden. Desuden har han også tilknyttet nogle printer venlige sider, hvilket så betyder at man skal rette/tilføje/ændre tekst 2 steder, men vha. denne include scriptet hentes teksten automatisk.
Avatar billede manon Nybegynder
15. juli 2003 - 18:04 #11
detox >>
Hvad forskel er der med:

$tekst = file_get_contents('tekst.txt');
$new = htmlentities($tekst);

i forhold til:

<? include ("notepad.txt"); ?>
Avatar billede detox Nybegynder
15. juli 2003 - 20:26 #12
include() bruges nok hovedsageligt til at tilføje noget kode til sit script, såsom funktioner eller forskellige foruddefinerede variabler o.l.
file_get_contents() bruges til at indlæse indholdet af en fil og lægge den i en variabel, som man så kan manipulere som man lyster.
Avatar billede manon Nybegynder
15. juli 2003 - 20:37 #13
detox >>
Skulle det så skrives sådan:

<? php
$tekst = file_get_contents('notepad.txt');
$new = htmlentities($tekst);
?>
Avatar billede detox Nybegynder
15. juli 2003 - 20:43 #14
Ja, og så:
echo($new);
der hvor du vil har det udskrevet.
Avatar billede manon Nybegynder
15. juli 2003 - 22:01 #15
detox >>
Min php viden er ret begrænset og hvis du kunne give mig hele koden og hvordan den skal se ud, så takker jeg mange gange.
Avatar billede detox Nybegynder
15. juli 2003 - 22:29 #16
Ok, lad os sige du har en tekstfil (text.txt), med følgende indhold:
----------
Her er en almindelig teskst,
skrevet af et almindeligt menneske.
Med "Æ Ø Å" og " æ ø å"!
----------
Så vil du kunne indlæse, manipulere og udskrive den således:
----------
<?
$t = file_get_contents('text.txt');
$t = htmlentities($t);
$t = nl2br($t);
echo $t;
?>
---------
Avatar billede raz0 Nybegynder
16. juli 2003 - 08:50 #17
Og hvis du ikke lige kører PHP 4.3.0 eller derover vil følgende kode virke:

$fp = fopen("din_tekst_fil.txt", "rb"); /* åbner filen til læsning binary */
while (!feof($fp)) $contents .= fread($fp, 1024); /* læser filen til en variabel */
fclose($fp); /* lukker fil pointeren */

$contents = htmlentities($contents); /* laver å om til &aring; osv. */
$contents = nl2br($contents); /* laver ny linje (\n) om til <br /> */

print "<div style='border: 1px dotted #000000;'>$contents</div>"; /* udskriver filens indhold "pænt" :) */

Håber det hjælper.
Avatar billede raz0 Nybegynder
16. juli 2003 - 08:57 #18
Du sagde du havde flere filer du hentede, så det vil nok være bedst at lave en funktion til formålet.

function($fil)
{
    $fp = fopen("din_tekst_fil.txt", "rb");
    while (!feof($fp)) $contents .= fread($fp, 1024);
    fclose($fp)

    $contents = htmlentities($contents);
    $contents = nl2br($contents);

    return $contents;
}
Avatar billede raz0 Nybegynder
16. juli 2003 - 09:03 #19
Ignorer lige det ovenstående indlæg. Kom til at ramme udfør for tidligt :/
-------------------------------

Du sagde du havde flere filer du hentede, så det vil nok være bedst at lave en funktion til formålet.

function indlaes_fil($fil)
{
    $fp = fopen($fil, "rb");
    while (!feof($fp)) $contents .= fread($fp, 1024);
    fclose($fp)

    $contents = htmlentities($contents);
    $contents = nl2br($contents);

    return $contents;
}

Bare smid funktionen tidligt i dit dokument, før du skal bruge den. Når du så vil have indlæst en fil, gør du bare noget i stil med følgende...

<?php print indlaes_fil($fil); ?>

Koden er som altid, ikke testet ;)
Avatar billede manon Nybegynder
16. juli 2003 - 09:06 #20
raz0 >>

Rolig nu - jeg kan slet ikke så meget php at ejg kan se hvad det er du prøver at fortælle.
Desuden skal det også være så simpelt som muligt.

Jeg har en alm. php side med billeder og tekst og for at min svigerfar kan redigere i teksten uden viden til HTML/PHP er der oprettet en notepad.txt dokument og deri skriver han ÆØÅ.

På selve PHP siden som vises på hans domæne har jeg lavet en simpel include funktion som henter de relevante txt dokumenter - højst 4 stk. per side.

Og så er det jeg spørger hvordan en styresystem på engelsk/fransk vil reagere når der skrives ÆØÅ i sådan et notepad.txt dokument.


:-)
Avatar billede raz0 Nybegynder
16. juli 2003 - 09:52 #21
Et fransk/engelsk styresystem ville ikke vise æ, ø eller å. Det er derfor du skal bruge funktionen htmlentities() som f.eks. laver å om til &aring;. Problemet er at include() indlæser filen direkte, og man kan altså ikke umidelbart lave alle å'er om til &aring; automatisk, derfor min funktion.

Jeg har prøvet at gøre det så let som muligt, så alle kan finde ud af det. Jeg forklarer lige igen.

Først tager du og markerer fra 'function indlaes_fil($fil)' til '}' af min kode. Derefter kopierer du det ind i dit PHP dokument så tideligt som muligt (selvfølgelig inden for <?php og ?> tagsene). Hvis du så f.eks. har en tekstfil der hedder 'nyhed.txt' som du skal have sat ind, skriver du bare <?php print indlaes_fil("./nyhed.txt"); ?> der hvor du vil have filen sat ind. Meget simpelt :)
Avatar billede manon Nybegynder
16. juli 2003 - 10:06 #22
raz0 >>

ok, men mine php sider er bare døbt index.php og derfor skal jeg vel bare sætte en....

<? php
'function indlaes_fil($fil)' til '}'
?>

...før min <head>


Og nede i <body> skriver jeg så ...

<?php print indlaes_fil("../notepad.txt"); ?>

.. der hvor jeg vil have teksten til at står - er dette korrekt?
Avatar billede raz0 Nybegynder
16. juli 2003 - 10:20 #23
Du behøver ikke at sætte funktionen i <head>, bare den optræder _før_ du bruger den nede i <body>. Du kunne endda sætte den ind lige før du skulle bruge den som her:
Avatar billede raz0 Nybegynder
16. juli 2003 - 10:21 #24
... eh, her:

<?php

function indlaes_fil($fil)
{
    $fp = fopen($fil, "rb");
    while (!feof($fp)) $contents .= fread($fp, 1024);
    fclose($fp)

    $contents = htmlentities($contents);
    $contents = nl2br($contents);

    return $contents;
}
print indlaes_fil("../notepad.txt");

?>
Avatar billede manon Nybegynder
16. juli 2003 - 10:22 #25
raz0 >>
takker, vil du svare så jeg kan lukke dette spm.
Avatar billede raz0 Nybegynder
16. juli 2003 - 10:27 #26
Selvfølgelig ;)
Avatar billede raz0 Nybegynder
16. juli 2003 - 10:33 #27
Jeg takker for pointene :-)
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