Jag har ett nyhetsbrev som skapas dynamiskt via en webbplats. Beroende på hur stort detta nyhetsbrev blir sätts utropstecken in på lite olika ställen i koden. Ibland hamnar tecknet bland css kod eller annan html-kod vilket förstör utseendet av brevet. Om du antar att det är korrekt html är det enklaste att ha en variabel "level"; Varför inte bara byta ut < mot \n< och > mot >\n ? Glömde säga att ifall det är mera än 74 tecken fram till en starttag < så ska även ett \n sättas in. Är det lika med eller större än 148 tecken så kommer ytterliggare ett \n att sättas in osv. Med utgångspunkt i det egentliga problemet föreslår jag att du använder base64_encode() samt chunk_split() för att göra om HTML-koden till något som funkar bra i epost. Kan du ge mig ett exempel på hur det skulle kunna se ut. Pröva så här:Sätta in \n före start html < och efter slut html >
Fick tips om att sätta in \n efter ett antal tecken. Har manuellt provat att lägga in \n efter ett antal tecken (74 tecken) och då kommer inte utropstecknet med.
Nu vill jag kunna lägga in \n dynamiskt. Det är inga problem om det är ren text utan html-kod. Men eftersom man kan själv lägga in bilder, fet stil, storlek (använder tinyMCE) på text så kommer html-kod att inkluderas vilket försvårar insättningen av \n. Jag inte vill att \n ska hamna i en html-tag.
Vill att \n ska hamna på följande sätt. Vill at det ska fungera på detta sätt.
Exempel 1: abc123\n<div>\nExempeltext\n</div>\n osv...\n
I exempel 2 har jag satt in \n i div taggen vilket är fel och som jag vill undvika.
Exempel 2: abc123\n<di\nv>\nExempeltext\n</div>\n osv...\n
Hur ska jag enklast lösa det så att det fungerar som exempel 1?Sv: Sätta in \n före start html < och efter slut html >
Varje gång du stöter på ett "<" så ökar du level med ett, varje gång du stöter på ett ">" så minskar du med ett. Om level någon gång går under 0 (det börjar på 0), så är det något fel, om level inte är =0 när hela strängen är klar så är det något fel (det finns fler sätt det kan vara fel på, det här täcker in en stor mängd).
Sätt sen enbart ut \n om level=0.Sv: Sätta in \n före start html < och efter slut html >
Sv:Sätta in \n före start html < och efter slut html >
Visar med ett exempel och byter ut 74 tecken mot 10.
Exempel:
abcdefghij\nklmnopqrst\nuvx\n<div>123456789a\nbcdefghij\n</div>\nSv: Sätta in \n före start html < och efter slut html >
Sv:Sätta in \n före start html < och efter slut html >
Datan som jag vill hantera kommer från en textarea som innehåller html-kod.
$content = $_REQUEST['content'];
$message = chunk_split(base64_encode($content));
Vad gör jag här...
$headers = 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\n";
$headers .= 'Content-Transfer-Encoding: 8bit' . "\n";
// Additional headers
$headers .= 'From: '.HEADERS1.' <'.HEADERS2.'>' . "\n";
if(mail($to, $subject, $message, $headers)){
$sent = true;
}else{
$sent = false;
}Sv: Sätta in \n före start html < och efter slut html >
$content = $_REQUEST['content'];
$message = chunk_split(base64_encode($content));
$headers = 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\n";
$headers .= 'Content-Transfer-Encoding: base64' . "\n";
// Additional headers
$headers .= 'From: '.HEADERS1.' <'.HEADERS2.'>' . "\n";
$sent = mail($to, $subject, $message, $headers);