Avatar billede fellix Nybegynder
04. april 2007 - 15:43 Der er 17 kommentarer og
2 løsninger

Bruge danske vokaler i PHP.

Jeg har lavet en lille kontakt side, hvor folk kan sende en email via PHP.

Der sker der tilsyneladende en lille fejl, hvad angår de danske bogstaver. Æ æ Ø ø Å å bliver til Æ æ Ø ø Ã… Ã¥.

Jeg ved hvordan man skriver æ ø å i almindelig html. Jeg har forestillet mig noget lignende en "søg og erstat" funktion, som (muligvis) går ind og finder alle Æ og erstatter med Æ osv.
Avatar billede jakobdo Ekspert
04. april 2007 - 15:52 #1
Kig på funktionen: htmlentities()
Avatar billede fellix Nybegynder
04. april 2007 - 16:02 #2
Den ser meget fornuftig ud, jeg kigger lige på den :)
Avatar billede fellix Nybegynder
04. april 2007 - 16:10 #3
Den virker ikke helt...

Jeg har to sider, én hvor brugere indtaster: navn, email, emne og besked.

De bliver så samlet via en form og sendt til en anden side, hvor PHP scriptet sidder.

Scriptet ser sådan ud:
<?php

$to      = 'min@mail.dk';
$subject = $_POST['emne'];
$message = 'Afsenders navn: ' . $_POST['navn'] . "\r\n" . "\r\n" . $_POST['besked'];

$headers = "From: " . $_POST['email'];
mail($to, $subject, $message, $headers);

?>

Jeg har så forsøgt at sætte scriptet ind sådan:
<?php

$str = $_POST['emne'];
echo htmlentities($str);
Avatar billede fellix Nybegynder
04. april 2007 - 16:12 #4
Hov, du får lige hele scriptet:
<?php
$str = $_POST['emne'];
echo htmlentities($str);

$to      = 'min@mail.dk';
$subject = $_POST['emne'];
$message = 'Afsenders navn: ' . $_POST['navn'] . "\r\n" . "\r\n" . $_POST['besked'];

$headers = "From: " . $_POST['email'];
mail($to, $subject, $message, $headers);

?>
Avatar billede Slettet bruger
04. april 2007 - 16:28 #5
Du skal huske rent faktisk at sætte htmlentities() rundt om beskeden.
Avatar billede fellix Nybegynder
04. april 2007 - 19:27 #6
Okay, jeg kan få den til at skrive de html tegn den skal bruge. Hvordan får jeg den så til at sende mail i html format?

Er det noget med '<html><body><p>noget tekst</p></body></html>'?
Avatar billede terrak Nybegynder
04. april 2007 - 20:33 #7
Prøv evt. at bruge dette:

$headers = "From: " . $_POST['email'] . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
Avatar billede fellix Nybegynder
04. april 2007 - 21:54 #8
Når jeg bruger det du skrev, bliver "Content-type:..." lagt til teksten efter afsender. Det skyldes sikkert at min mail hedder:

mail ($to, $subject, $message, $headers);

Derfor tager den sikkert Content-type som almindelig tekst. Jeg har fået den til at skrive html lignende kode, ved at bruge følgende:

mail ($to,htmlentities($subject,ENT_NOQUOTES,'ISO-8859-1'),htmlentities($message,ENT_NOQUOTES,'ISO-8859-1'),$header);

Hvordan kan jeg så lave det om, så den tror mailen er baseret på HTML? Jeg har forsøgt mig ad med det eksempel der findes i PHP manualen, men det virker ikke helt efter hensigten.
Avatar billede terrak Nybegynder
04. april 2007 - 22:53 #9
Jeg mener jeg kan huske noget med at brugen af dobbelte og enkelte citationstegn kan gøre forskel. Følgende virker hos mig.

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: ' . $_POST['email'] . "\r\n";
Avatar billede fellix Nybegynder
05. april 2007 - 09:55 #10
Det virker ikke for mig. Du har ikke et eksempel? Så kan jeg muligvis se, hvad der går galt i min...

Du ved ikke hvordan man omsætter sin mail fra at være almindelig tekst til HTML?

Tak for de hurtige svar :)
Avatar billede jakobdo Ekspert
09. april 2007 - 17:19 #11
Avatar billede fellix Nybegynder
12. april 2007 - 19:46 #12
Jeg har haft lidt travlt på det sidste og derfor ikke haft tid til at se på det før nu...

Jeg forsøger mig ad med hjælpen fra PHP igen :)
Avatar billede fellix Nybegynder
12. april 2007 - 20:02 #13
Nu virker det (næsten). Den kan godt afsende mails i HTML format nu. Det eneste jeg sådan set mangler, er at få en form for oversætter/erstatter. Den skal erstatte de tegn som PHP skriver (Æ æØ øŠå) med HTML koderne for (Æ æ Ø ø Å å) altså &AElig; &aelig; osv...

Jeg smider et indlæg så snart det virker og beskrivelse af, hvad jeg gjorde, så andre også kan få glæde og gavn af det.
Avatar billede jakobdo Ekspert
12. april 2007 - 20:35 #14
Der skal du igen gøre brug af: htmlentities()
Avatar billede fellix Nybegynder
12. april 2007 - 20:55 #15
#jakobdo
Du skal have tak for din hjælp, jeg har dog valgt at bruge str_replace() i stedet for htmlentities(). Jeg lavede en lille replace funktion som finder alle danske vokaler og linjeskift og laver dem om som de skrives i HTML.

<?php
$phrase  = $_POST['message'];
$old    = array("Æ", "Ø", "Å", "æ", "ø", "å", "\n");
$new    = array("&AElig;", "&Oslash;", "&Aring;", "&aelig;", "&oslash;", "&aring;", "<br>");

$newphrase = str_replace($old, $new, $phrase);
?>

#terrak
Du skal også have tak, jeg løb ind i nogle problemer hvad angik " ', der prøvede jeg lige at skifte nogle ud, derefter kørte det bare.

#jakobdo og terrak i må smide et svar, så deler jeg pointene mellem jer.
Avatar billede jakobdo Ekspert
12. april 2007 - 21:10 #16
Svar!
Avatar billede terrak Nybegynder
12. april 2007 - 22:45 #17
Det var da godt at mit input ikke gik helt til spilde så :-)
Avatar billede fellix Nybegynder
13. april 2007 - 09:18 #18
Rigtigt :D.

Lige en lille detalje til scriptet ovenfor. Man skal huske også at anvende det på navnet og evt. emnet :). Eksempelvis som nedenfor. Der kan evt. også tilføjes flere tegn, da PHP og HTML ikke ligner hinanden ;)

<?php
$name  = $_POST['navn'];
$old    = array("Æ", "Ø", "Å", "æ", "ø", "å", "\n", "\'");
$new    = array("&AElig;", "&Oslash;", "&Aring;", "&aelig;", "&oslash;", "&aring;", "<br>", "'");

$newname = str_replace($old, $new, $name);
?>
Avatar billede jakobdo Ekspert
13. april 2007 - 09:24 #19
Takker for point.
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