Avatar billede squazz Novice
08. september 2009 - 19:33 Der er 14 kommentarer og
1 løsning

Problemer i array til udskiftning af æøå og lign.

Jeg ved godt at mange spørger til dette på siden, men jeg syntes ikke at jeg kan finde et svar jeg rigtigt kan bruge til noget.

Olebole gav mig her et svar som jeg kunne bruge lidt:
http://www.eksperten.dk/spm/332917

Ud fra den har jeg fået mig sjusset frem til dette:

$aRepl = array(
    " " => " ",
    "¡" => "¡",
    "¢" => "¢",
    "£" => "£",
    "¤" => "¤",
    "¥" => "¥",
    "¦" => "¦",
    "§" => "§",
    "¨" => "¨",
    "©" => "©",
    "ª" => "ª",
    "«" => "«",
    "¬" => "¬",
    "­" => "­",
    "®" => "®",
    "¯" => "¯",
    "°" => "°",
    "±" => "±",
    "²" => "²",
    "³" => "³",
    "´" => "´",
    "µ" => "µ",
    "¶" => "¶",
    "·" => "·",
    "¸" => "¸",
    "¹" => "¹",
    "º" => "º",
    "»" => "»",
    "¼" => "¼",
    "½" => "½",
    "¾" => "¾",
    "¿" => "¿",
    "À" => "À",
    "Á" => "Á",
    "Â" => "Â",
    "Ã" => "Ã",
    "Ä" => "Ä",
    "Å" => "Å",
    "Æ" => "Æ",
    "Ç" => "Ç",
    "È" => "È",
    "É" => "É",
    "Ê" => "Ê",
    "Ë" => "Ë",
    "Ì" => "Ì",
    "Í" => "Í",
    "Î" => "Î",
    "Ï" => "Ï",
    "Ð" => "Ð",
    "Ñ" => "Ñ",
    "Ò" => "Ò",
    "Ó" => "Ó",
    "Ô" => "Ô",
    "Õ" => "Õ",
    "Ö" => "Ö",
    "×" => "×",
    "Ø" => "Ø",
    "Ù" => "Ù",
    "Ú" => "Ú",
    "Û" => "Û",
    "Ü" => "Ü",
    "Ý" => "Ý",
    "Þ" => "Þ",
    "ß" => "ß",
    "à" => "à",
    "á" => "á",
    "â" => "â",
    "ã" => "ã",
    "ä" => "ä",
    "å" => "å",
    "æ" => "æ",
    "ç" => "ç",
    "è" => "è",
    "é" => "é",
    "ê" => "ê",
    "ë" => "ë",
    "ì" => "ì",
    "í" => "í",
    "î" => "î",
    "ï" => "ï",
    "ð" => "ð",
    "ñ" => "ñ",
    "ò" => "ò",
    "ó" => "ó",
    "ô" => "ô",
    "õ" => "õ",
    "ö" => "ö",
    "÷" => "÷",
    "ø" => "ø",
    "ù" => "ù",
    "ú" => "ú",
    "û" => "û",
    "ü" => "ü",
    "ý" => "ý",
    "þ" => "þ",
    "ÿ" => "ÿ",
    "<" => "&lt;",
    ">" => "&gt;",
    "&" => "&amp;",
    "\n" => "<br>",
    "\"" => "&quot;",
    "\'" => "&#39;"
);

Desværre har jeg det problem at disse to

    "\"" => "&quot;",
    "\'" => "&#39;"

ikke vil givet et output jeg er tilfreds med. Skriver jeg dette:

"
'

får jeg dette:

\"
'

er der noget som kan forklare mig hvorfor det er at " ikke bliver dekodet? Og evt. har en forklaring til hvordan jeg kan komme uden om problemet så jeg kan få gjort mit array færdigt? :)
Avatar billede arne_v Ekspert
08. september 2009 - 19:44 #1
1)  Kan du vise et lille stykke kode som demonstrerer problemet ?

(det goer det lidt nemere end at vi skal gaette hvordan din kode ser ud)

2)  Er der nogen pointe ? Er US-ASCII only og entiteter for resten ikke noget som man brugte for 10 aar siden og som er totalt foraledet idag ?
Avatar billede olebole Juniormester
08. september 2009 - 21:12 #2
<ole>

Dit reelle problem er formodentlig sammenblanding af forskellige tegnsæt. Bruger du det samme tegnsæt overalt, har du - helt som arne_v er inde på - næppe brug for HTML-entities  =)

/mvh
</bole>
Avatar billede squazz Novice
08. september 2009 - 23:13 #3
1. Kan dette bruges? Det giver problemer i min mail når jeg bruger denne mailformel:

$besked = strtr( $_POST['besked'], $aRepl );
    $navn = strtr( $_POST['navn'], $aRepl );
    $telefon = strtr( $_POST['telefon'], $aRepl );
   
    $to = "kasper@XXXX.dk";

    $from = "From: ".$_POST['mail'];
    $text = "";

    $semi_rand = md5(time());
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

    $subject = "Besked fra Squazz.dk" . $subject;

    $subject = '=?utf-8?B?' . base64_encode($subject) . '?=';
    $headers = $from . "\r\n" . 'X-Mailer: PHP/' . phpversion() . "\r\n" . 'MIME-Version: 1.0' . "\r\n" . 'Content-Type: multipart/alternative;' . "\r\n" . '    boundary="' . $mime_boundary . '"' . "\r\n";

    $message = "This is a multi-part message in MIME format.


--" . $mime_boundary . "
Content-Type: text/plain; charset=\"iso-8859-1\"
Content-Transfer-Encoding: 7bit

" . (($text != "") ? $text : "Denne mail er desværre kun tilgængelig i HTML-format.") . "

--" . $mime_boundary . "
Content-Type: text/html; charset=\"iso-8859-1\"
Content-Transfer-Encoding: 7bit

<html>
                    <head>
                    </head>
                    <body>
                    <table>
                    <tr>
                            <th><h2>Hej, du har modtaget mail fra en bruger:</h2></th>
                    </tr><tr>
                            <td><b>Navn:</b> " . $navn . "</td>
                    </tr><p><tr>
                            <td><b>Besked:</b></td><tr><td> " . $besked . "</td>
                    </tr><p><tr>
                            <td><b>E-mail:</b> " . $_POST['mail']. "</td>
                    </tr><tr>
                            <td><b>Telefon:</b> " . $telefon . "</td>
                    </tr>
                    </table>
                    </body>
                    </html>

--" . $mime_boundary . "--";


    mail($to, $subject, $message, $headers) or die("Beskeden kunne ikke sendes, pøv igen senere");
        echo '<h2>Følgende besked er blevet sendt</h2>
                    <table>
                    <tr>
                            <td><b>Navn:</b> ' . $navn . '</td>
                    </tr><p><tr>
                            <td><b>Besked:</b></td><tr><td> ' . $besked . '</td>
                    </tr><p><tr>
                            <td><b>E-mail:</b> ' . $_POST['mail']. '</td>
                    </tr><tr>
                            <td><b>Telefon:</b> ' . $telefon . '</td>
                    </tr>
                    </table>';

2. Kan det være fordi at det SKAL være UTF-8 jeg bruger?
Avatar billede squazz Novice
08. september 2009 - 23:14 #4
Jeg ved der sikkert er mange fejl i koden, f.eks. bruger jeg <b> hvor jeg måske burde bruge <strong> og lign. mange andre steder, men koden virker da (nogenlunde).
Avatar billede ziron Nybegynder
09. september 2009 - 01:24 #5
Tag et kig på funktionen htmlspecialchars,

http://us.php.net/manual/en/function.htmlspecialchars.php
Avatar billede ziron Nybegynder
09. september 2009 - 01:25 #6
Kan umelbart erstatte den funktion du bruger til at udskifte tegn nu.
Avatar billede arne_v Ekspert
09. september 2009 - 01:26 #7
Det er ikke nødvendigt at bruge HTML entities for at bruge UTF-8. Snarere tværtimod (der er ikke meget point i at angive UTF-8 hvis alt er US-ASCII p.g.a. HTML entities.
Avatar billede arne_v Ekspert
09. september 2009 - 01:26 #8
Brug af base64 i en mail header ser ikke smart ud.
Avatar billede arne_v Ekspert
09. september 2009 - 01:32 #9
Dit eksempel er ikek særligt godt, da man ikke bare kan køre det og se resultatet.

Men det ser ud som at:

  "\'" => "&#39;"

er forkert og skal være:

    "'" => "&#39;"

Følgende virker hos mig:

<?php
$aRepl = array(
    " " => "&nbsp;",
    "¡" => "&iexcl;",
    "¢" => "&cent;",
    "£" => "&pound;",
    "¤" => "&curren;",
    "¥" => "&yen;",
    "¦" => "&brvbar;",
    "§" => "&sect;",
    "¨" => "&uml;",
    "©" => "&copy;",
    "ª" => "&ordf;",
    "«" => "&laquo;",
    "¬" => "&not;",
    "­" => "&shy;",
    "®" => "&reg;",
    "¯" => "&macr;",
    "°" => "&deg;",
    "±" => "&plusmn;",
    "²" => "&sup2;",
    "³" => "&sup3;",
    "´" => "&acute;",
    "µ" => "&micro;",
    "¶" => "&para;",
    "·" => "&middot;",
    "¸" => "&cedil;",
    "¹" => "&sup1;",
    "º" => "&ordm;",
    "»" => "&raquo;",
    "¼" => "&frac14;",
    "½" => "&frac12;",
    "¾" => "&frac34;",
    "¿" => "&iquest;",
    "À" => "&Agrave;",
    "Á" => "&Aacute;",
    "Â" => "&Acirc;",
    "Ã" => "&Atilde;",
    "Ä" => "&Auml;",
    "Å" => "&Aring;",
    "Æ" => "&AElig;",
    "Ç" => "&Ccedil;",
    "È" => "&Egrave;",
    "É" => "&Eacute;",
    "Ê" => "&Ecirc;",
    "Ë" => "&Euml;",
    "Ì" => "&Igrave;",
    "Í" => "&Iacute;",
    "Î" => "&Icirc;",
    "Ï" => "&Iuml;",
    "Ð" => "&ETH;",
    "Ñ" => "&Ntilde;",
    "Ò" => "&Ograve;",
    "Ó" => "&Oacute;",
    "Ô" => "&Ocirc;",
    "Õ" => "&Otilde;",
    "Ö" => "&Ouml;",
    "×" => "&times;",
    "Ø" => "&Oslash;",
    "Ù" => "&Ugrave;",
    "Ú" => "&Uacute;",
    "Û" => "&Ucirc;",
    "Ü" => "&Uuml;",
    "Ý" => "&Yacute;",
    "Þ" => "&THORN;",
    "ß" => "&szlig;",
    "à" => "&agrave;",
    "á" => "&aacute;",
    "â" => "&acirc;",
    "ã" => "&atilde;",
    "ä" => "&auml;",
    "å" => "&aring;",
    "æ" => "&aelig;",
    "ç" => "&ccedil;",
    "è" => "&egrave;",
    "é" => "&eacute;",
    "ê" => "&ecirc;",
    "ë" => "&euml;",
    "ì" => "&igrave;",
    "í" => "&iacute;",
    "î" => "&icirc;",
    "ï" => "&iuml;",
    "ð" => "&eth;",
    "ñ" => "&ntilde;",
    "ò" => "&ograve;",
    "ó" => "&oacute;",
    "ô" => "&ocirc;",
    "õ" => "&otilde;",
    "ö" => "&ouml;",
    "÷" => "&divide;",
    "ø" => "&oslash;",
    "ù" => "&ugrave;",
    "ú" => "&uacute;",
    "û" => "&ucirc;",
    "ü" => "&uuml;",
    "ý" => "&yacute;",
    "þ" => "&thorn;",
    "ÿ" => "&yuml;",
    "<" => "&lt;",
    ">" => "&gt;",
    "&" => "&amp;",
    "\n" => "<br>",
    "\"" => "&quot;",
    "'" => "&#39;"
);

echo strtr('"', $aRepl) . "\r\n";
echo strtr('\'', $aRepl) . "\r\n";
?>
Avatar billede arne_v Ekspert
14. oktober 2009 - 02:26 #10
Tid at få afsluttet her ?
Avatar billede squazz Novice
15. oktober 2009 - 01:34 #11
Jeg undskylder for inaktiviteten, der har været en del skolearbejde at se til, så har slet ikke fået tjekket på på eksperten :(

Men noget irriterer mig... For du har ret arne_v, det virker fint det du har skrevet, men, smider jeg det gennem min mail, får jeg \" og \'. Laver jeg \" og \' får jeg bare \\" og \\'... Og dette både i den mail den sender, og den synlige besked brugeren får...

Jeg har prøvet at lave variabler som i min mail, men det er ikke den måde jeg har lavet variabler på der giver problemet...

Så altså, virker arrayet vel egentligt fint, det er bare når jeg skal bruge den i mail det giver problemer... Dette gør den både ved brug af htmlspecialchars, mit array og htmlentities. Hvorfor gør den dette? Er dette grundet base64?
Avatar billede arne_v Ekspert
24. oktober 2009 - 20:16 #12
Kan du poste et komplet PHP program som viser problemet ?

Det er meget svært at troubleshoote noget mail afsendings kode som vi ikke har set.
Avatar billede squazz Novice
25. oktober 2009 - 02:19 #13
Jeg undskylder, min fejl...
Hvis du/I går ind på www.squazz.dk/kontakt.php tror jeg det vil være den nemmeste løsning, da jeg allerede har sendt mail funktionen... Jeg mener at den besked man får frem efter at have sendt en mail, viser præcis det samme som det der kommer ind i min mail, og dermed også den fejl jeg får i min mail...

Hvis ikke kan jeg da lige prøve at få lavet et eksempel som kan ses :)
Avatar billede squazz Novice
01. november 2009 - 13:41 #14
Rent faktisk er den kode der giver problemer postet i #3... Jeg ved ikke hvordan jeg skal forenkle den da det er en kammerat der har hjulpet mig med at lave den...
Avatar billede squazz Novice
07. april 2010 - 23:48 #15
lukker da jeg aldrig fandt frem til noget
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