Avatar billede tberte1 Nybegynder
02. juli 2004 - 13:43 Der er 9 kommentarer og
1 løsning

xml til PHP til txt e-mail

Hej

Jeg har et problem når jeg vil sende en txt-mail, som genereres af PHP på baggrund af indholdet i et xml-dok.

Mit kommer, hvis jeg henter noget tekst fra xml hvori der er inkluderet "\r\n". Det bliver ikke tolket som linjeskift, men bliver blot skrevet ud.

Det virker lidt som om at det bliver opfattet som hvis man skrev:
echo '\r\n'; fremfor "\r\n"; i PHP.

Kan man ikke på en eller anden måde angive at input teksten skal opfattes som vis der var "" omkring og ikke ''.

Håber spørgsmålet blev forståeligt :-)
Avatar billede Slettet bruger
02. juli 2004 - 14:12 #1
Det smarteste må vel være at sørge for at xml-filen har de rette tegn i stedet for escape-koderne.
Avatar billede tberte1 Nybegynder
02. juli 2004 - 14:14 #2
que....

Hvad mener du?
Avatar billede Slettet bruger
02. juli 2004 - 14:23 #3
\r er en escape-kode, der nogle steder kan bruges til at repræsentere et carriage-return (ASCII 13).
\n er en escape-kode, der nogle steder kan bruges til at repræsentere et line-feed (ASCII 10).

I stedet for at skrive escape-koderne i xml-filen, burde der have været de rigtige linieskift. Du kan godt lave en lappe-løsning ved at få PHP til at erstatte koderne med de rigtige tegn, men det bedste ville være at løse problemet, hvor det opstår.
Avatar billede tberte1 Nybegynder
02. juli 2004 - 14:29 #4
Det er ikke lige mit skarpeste område det her. Hvad ville du i xml skrive istedet for f.eks. bla bla bla \r\n bla bla.

Blot at lave et alm. linjeskift(enter) i xml dokumentet virker ikke, da det blot trækkes sammen.
Avatar billede Slettet bruger
02. juli 2004 - 14:37 #5
Skriver du din xml manuelt? Og skal den bruges til andet en den mail?

Du kan erstatte med:

$tekst=str_replace('\n',"\n",$tekst);
$tekst=str_replace('\r',"\r",$tekst);

Men jeg mener stadig, at det ville være bedre at løse problemet ved roden.

Hvad mener du med "trækkes sammen"?
Avatar billede tberte1 Nybegynder
02. juli 2004 - 14:41 #6
Ja xml-dokumentet oprettes manuelt.

Ligesom i HTML trækkes whitespaces sammen i XML.
Avatar billede tberte1 Nybegynder
02. juli 2004 - 14:54 #7
Den løsning du foreslog ser ud til at virke, men jeg er ikke helt sikker på hvad du mener når du skriver "at det ville være bedre at løse problemet ved roden".
Avatar billede Slettet bruger
02. juli 2004 - 15:11 #8
Sammentrækning af whitespace er udelukkende noget, der bør ske, når et dokument vises. Der er (så vidt jeg ved) ikke i XML nogen regel om at flere blanktegn skal trækkes sammen. (Men det er der i XHTML, som er baseret på XML.) En XML-parser, der opfører sig korrekt, vil ikke fjerne linieskift fra indholdet.

Du kan endda se det i praksis ved at lave et HTML-dokument med mange linieskift. Når det bliver vist i en browser, vil det blive trukket sammen, men hvis du prøver at vise kilden, kan du se, at linieskiftene stadig er der. Så også for HTML er det udelukkende under fremvisning at sammentrækning finder sted.

Hvordan læser dit script XML-filen? Det kan være, at du læser den på en måde, så linieskift forsvinder.

Det, jeg mener med "at løse problemet ved roden", er, at få løst det således, at dit PHP-script bare tager det reelle indhold af XML-filen og sender det videre uden at skulle rette i det.
Avatar billede tberte1 Nybegynder
02. juli 2004 - 15:20 #9
ok...jeg roder lidt videre med. Kom med et svar, så du kan få lidt for dit besvær...
Avatar billede Slettet bruger
02. juli 2004 - 15:44 #10
Hvis det kun er dig, der skal skrive (og læse) de XML-filer, så kan løsningen med at få PHP til at erstatte koderne være "god nok", men "rigtigt god" er den ikke.
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