/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Specielle tegn i PHP og HTML
Fra : Thomas Rokamp


Dato : 20-03-04 22:42

Hejsa!

Jeg er i gang med et site, der kører i PHP, og hvor jeg skal vise specielle
tegn (udenlandske bogstaver) i HTML.

Hvordan er det smartest at gemme tekster, hvis de skal vises i HTML via PHP?
Skal jeg skrive teksterne i kodet form i php-scripts eller direkte i HTML?

Jeg har set eksempler på sites, hvor man gemmer hver sætning på en plads i
et array, og kalder det frem på siden. Det er vel hovedsageligt for at lave
en form for sprog-styrring, så man kan bruge samme logik til flere
forskellige sprog. Men er denne metode hurtig eller kræver den mange
ressourcer, frem for at gemme tekst direkte i HTML?

Beklager hvis mit spørgsmål lyder lidt rodet. Det er lidt svært at forklare
:)

/Thomas



 
 
Kasper Garnæs (20-03-2004)
Kommentar
Fra : Kasper Garnæs


Dato : 20-03-04 23:38

Thomas Rokamp <no_spam@crax.dk> wrote:
> Jeg er i gang med et site, der kører i PHP, og hvor jeg skal vise
> specielle tegn (udenlandske bogstaver) i HTML.
>
> Hvordan er det smartest at gemme tekster, hvis de skal vises i HTML
> via PHP? Skal jeg skrive teksterne i kodet form i php-scripts eller
> direkte i HTML?
>
> Jeg har set eksempler på sites, hvor man gemmer hver sætning på en
> plads i et array, og kalder det frem på siden. Det er vel
> hovedsageligt for at lave en form for sprog-styrring, så man kan
> bruge samme logik til flere forskellige sprog. Men er denne metode
> hurtig eller kræver den mange ressourcer, frem for at gemme tekst
> direkte i HTML?

Hvis du alligevel bruger PHP, ville jeg da helt sikkert udnytte det og
skrive teksterne ind i mine PHP scripts. ONLamp har en tutorial om
internationlization og localization, der umiddelbart virker udemærket:
http://www.onlamp.com/pub/a/php/2002/11/28/php_i18n.html.

Hvis du følger deres forslag, resulterer det i et opslag i et array for hver
seperat sprogstreng, du har på en side. Hastighedsmæssigt burde det ikke
være noget, der tynger dine scripts mærkbart ned.

Jeg kan ikke helt finde ud af, hvad det hele har at gøre med "specielle tegn
(udenlandske bogstaver)" men håber, du kan bruge det til noget alligevel.

--
Med venlig hilsen / Regards
Kasper Garnæs
http://kasper.garnaes.dk



René Jensen (21-03-2004)
Kommentar
Fra : René Jensen


Dato : 21-03-04 01:42

Thomas Rokamp wrote:
> Jeg er i gang med et site, der kører i PHP, og hvor jeg skal vise specielle
> tegn (udenlandske bogstaver) i HTML.

Selv er jeg i gang med at udforske PHP, men har skrevet ASP før, så mon
ikke også der en funktion/metode til at HTML encode en given tekst?
Samme funktion i ASP HTML encoder de specielle tegn, såsom de danske Æ,
Ø og Å, så teksten altid vil se ens ud, uanset om man benytter dansk
eller engelsk tegnsæt.

Med venlig hilsen,
René Jensen


Peter Brodersen (21-03-2004)
Kommentar
Fra : Peter Brodersen


Dato : 21-03-04 04:04

On Sun, 21 Mar 2004 01:42:28 +0100, René Jensen
<not4u2know@privacy.org> wrote:

>Selv er jeg i gang med at udforske PHP, men har skrevet ASP før, så mon
>ikke også der en funktion/metode til at HTML encode en given tekst?

Jo, den hedder htmlentities():
http://php.net/htmlentities

>Samme funktion i ASP HTML encoder de specielle tegn, såsom de danske Æ,
>Ø og Å, så teksten altid vil se ens ud, uanset om man benytter dansk
>eller engelsk tegnsæt.

Det er derimod helt forkert og en misforståelse. Hvis tegnsættet er
alm. iso-8859-1, så er der intet problem i at skrive æøå direkte - og
det kan kun anbefales (det er lettere at søge i kildeteksten på den
måde, m.m.).

At encode æ til &aelig; er en mulighed, hvis man fx sidder i en
editor, der ikke har mulighed for at skrive æ-tegnet eller lignende.
Men hvis man i første omgang har teksten i den endelige æøå-form, bør
man spare sig bjørnetjenesten for at konvertere det til entities (fx
&aelig; etc.). Det er kun til gene og unødig fyld.

--
- Peter Brodersen

Ugens sprogtip: hoved (og ikke hovede)

René Jensen (21-03-2004)
Kommentar
Fra : René Jensen


Dato : 21-03-04 23:10

Peter Brodersen wrote:
> Det er derimod helt forkert og en misforståelse. Hvis tegnsættet er
> alm. iso-8859-1, så er der intet problem i at skrive æøå direkte - og
> det kan kun anbefales (det er lettere at søge i kildeteksten på den
> måde, m.m.).

Min fejl - det jeg reelt mente var selvf. outputet af HTML/PHP filen,
således at teksten i ens internet browser forekom altid ens. Der var
mine fingre hurtigere end mit hovedet :)

Med venlig hilsen,
René Jensen


Jonas Koch Bentzen (21-03-2004)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 21-03-04 15:13

Thomas Rokamp skrev:
>
> Jeg er i gang med et site, der kører i PHP, og hvor jeg skal vise
> specielle tegn (udenlandske bogstaver) i HTML.
>
> Hvordan er det smartest at gemme tekster, hvis de skal vises i HTML via
> PHP? Skal jeg skrive teksterne i kodet form i php-scripts eller direkte i
> HTML?
>
> Jeg har set eksempler på sites, hvor man gemmer hver sætning på en plads i
> et array, og kalder det frem på siden. Det er vel hovedsageligt for at
> lave en form for sprog-styrring, så man kan bruge samme logik til flere
> forskellige sprog. Men er denne metode hurtig eller kræver den mange
> ressourcer, frem for at gemme tekst direkte i HTML?

Den måde, jeg har lavet eksempelvis findhim.com på, er dels at bruge
Unicode-tegnsættet UTF-8 hele vejen igennem og dels at bruge gettext til
oversættelserne.

Fordelen ved at bruge UTF-8 overalt på sitet er, at brugere, der skriver
noget på sitet, kan bruge alle slags tegn, f.eks. kinesiske, kyrilliske
eller hvad ved jeg. Man kan også have f.eks. kinesisk tekst og dansk tekst
med Æ, Ø, Å på samme side. Dén slags er ikke muligt, hvis man sætter
tegnsættet til at være et specifikt kinesisk som GB2312 eller et specifikt
vestligt som ISO-8859-1.

Og hvad er så ulempen? Ja, der er egentlig ikke de store ulemper (hvilket
også er grunden til, at jeg bruger UTF-8 på stort set alt, hvad jeg laver)
- men i starten skal man lære sig nogle nye vaner, og derfor kan det godt
være lidt besværligt. Jeg har lidt for mange tømmermænd til at komme ind på
de tekniske detaljer, men kan bare sige, at man skal sørge for, at man
bruger nogle værktøjer, der er parat til Unicode. Dvs., at man skal sørge
for følgende:

1. De strengfunktioner, man bruger, skal være parat til Unicode. ECMAScript
er som udgangspunkt parat til Unicode, men PHP er ikke, så dér skal man
sørge for at bruge multibyte-strengfunktionerne
(http://dk.php.net/mbstring). Dog kan man vha. PHP-indstillingen
mbstring.func_overload gøre sådan, at man kan fortsætte med at bruge de
normale strengfunktioner, og så "oversætter" PHP automatisk - dvs., hvis
man f.eks. skriver substr($tekst, 10) i sin kode, så er det i virkeligheden
funktionen mb_substr($tekst, 10), der bliver kaldt.

2. Ens database (hvis man bruger sådan en), skal være parat til Unicode.
PostgreSQL har virkelig godt understøttelse for Unicode, og MySQL er ved at
komme efter det. Tjek dokumentationen.

3. Man skal sørge for at gemme ens filer i UTF-8 i stedet for ISO-8859-1. I
den editor, jeg bruger (Kate) kan man vælge hvilket tegnsæt, filen skal
gemmes med, når man gemmer. Dvs., man skriver bare filen med Æ, Ø, Å eller
hvad man nu ellers har lyst til, og sørger så for at gemme filen i UTF-8.
Tjek, at din editor kan gemme i UTF-8.

4. Man skal selvfølgelig angive korrekt tegnsæt på sine sider.

Det lyder alt sammen lidt besværligt, men når man først har gjort
ovenstående til en vane, går det som en leg.



Mht. gettext (http://dk.php.net/gettext): gettext er samling af
programmer/værktøjer, der hjælper én til at lave sit program (webside,
skrivebordsprogram, kommandolinjeprogram, whatever) flersproget. I sin
PHP-kode skriver man f.eks.

echo _("Hi, how are you?");

Bemærk understregen - dén er simpelthen funktionsnavnet (eller rettere, den
er et alias til gettext()-funktionen). Man har så nogle sprogfiler, og hvis
brugeren så har valgt f.eks. dansk som sprog, så kommer der til at stå
"Hej, hvordan går det?" på siden. Hvis man har lavet nogle nye tekster på
et program og ikke har fået dem oversat endnu til et bestemt sprog, så får
brugeren bare de nye tekster på det sprog, de står i i selve filen, altså
"standardsproget", om man vil - og derfor vælger man som regel at skrive
teksterne på engelsk i selve PHP-filen og så have en dansk oversættelse i
en sprogfil.

gettext bruger binære filer, som i et webmiljø indlæses i webserverens
hukommelse ved start af serverprogrammet. Derfor er det lynhurtigt.

gettext har ét problem, og det er, at det pga. meget sparsomme
fejlmeddelelser er svært at komme i gang med. Når man først får lært det,
er det dog et glimrende redskab - så spørg her i gruppen, hvis ikke du kan
finde ud af det.

--
- Jonas Koch Bentzen

http://understroem.dk/
http://findhim.com/

Jonas Koch Bentzen (21-03-2004)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 21-03-04 15:27
Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408931
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste