webForumDet fria alternativet

Ändra html text till normal text!

12 svar · 420 visningar · startad av Snakes

SnakesMedlem sedan okt. 2004386 inlägg
#1

Om vi säger att jag har denna text

<br>Labba<br>Labba2

kan jag ändra den till

Labba
Labba2
Erik JuhlinMedlem sedan maj 20007 625 inlägg
#2
txt = txt.replace(/<br>/gi, "\n");
SnakesMedlem sedan okt. 2004386 inlägg
#3

inte bara <br>..... utan ta bort all html

nitro2k01Medlem sedan aug. 20037 630 inlägg
#4

Jag ökar på Erik's exempel och lägger till en rad som tar bort all HTML efteråt. ".*" på första raden matchar alla tecken, så att till exmpel även <br /> matchas och ersätts av nyradstecken.

 
txt = txt.replace(/<br.*>/gi, "\n");
txt = txt.replace(/<.*>/gi, "");
SnakesMedlem sedan okt. 2004386 inlägg
#5

men det kan ju inte funka..... då tar den bort en adress om den står så här
<adress@domain.se>
och det vill jag inte.....
förresten hur gör jag om jag vill ha tvärtom, från
txt.replace(/<br>/gi, "\n");
till
txt.replace(/\n/gi, "<br>");
eller?

dectgapMedlem sedan sep. 20021 542 inlägg
#6

nitro2k01 skrev:

Jag ökar på Erik's exempel och lägger till en rad som tar bort all HTML efteråt. ".*" på första raden matchar alla tecken, så att till exmpel även <br /> matchas och ersätts av nyradstecken.

 
txt = txt.replace(/<br.*>/gi, "\n");
txt = txt.replace(/<.*>/gi, "");

Dock söker regexpen girigt, så att ett mönster matchar så mycket som möjligt.
I strängen "ett**<br />två<br />**tre" kommer det felstilta att matchas av det första replace-anropet, och spotta ut strängen "ett\ntre" (med en radbrytning istället för \n).

Sökningen görs enklast till o-girig (ungreedy) så här:

 
txt = txt.replace(/<br.*?>/gi, "\n");
txt = txt.replace(/<.*?>/gi, "");

Snakes skrev:

men det kan ju inte funka..... då tar den bort en adress om den står så här
<adress@domain.se>

Hur vill du ha det då - ska HTML-taggar plockas bort eller inte?
Om svaret är "ibland", vilka regler är det som ska gälla?

nitro2k01Medlem sedan aug. 20037 630 inlägg
#7

Dectgap, man skulle ju kunna göra så att man har en regexp som replacar <person@doman.se> med [person@doman.se] om det finns ett @ i strängen. Dock så vet jag inte hur en sån regexp ser ut, men dectgap, du kanske vet, eller kan lista ut?

SnakesMedlem sedan okt. 2004386 inlägg
#8

Snakes skrev:

förresten hur gör jag om jag vill ha tvärtom, från
txt.replace(/<br>/gi, "\n");
till
txt.replace(/\n/gi, "<br>");
eller?

Hur gör jag angående det? alltså jag har en editor som switchar från html till normal text och tvärtom

dectgapMedlem sedan sep. 20021 542 inlägg
#9

nitro2k01 skrev:

Dectgap, man skulle ju kunna göra så att man har en regexp som replacar <person@doman.se> med [person@doman.se] om det finns ett @ i strängen. Dock så vet jag inte hur en sån regexp ser ut, men dectgap, du kanske vet, eller kan lista ut?

Om jag, efter några enkla tester, förstår läsarna (IE, i både standards och quirks mode, och FireFox) rätt gör de rätt och tolkar <-tecken som början på en HTML-tagg och < som vilket tecken som helst.

Lösningen är alltså att man gör rätt, och istället för

<person@doman.se>

skriver man

&lt;person@doman.se&gt;

Visst går det att skriva en regexp som letar efter @-tecken i taggen, men om man bara gör rätt (använder < resp > för < resp >) ska det inte behövas (tror jag).

nitro2k01Medlem sedan aug. 20037 630 inlägg
#10

Då är det nog bättre att ta innerHTML från en div och sen ge till value på en textarea, och sen samma procedur baklänges.

SnakesMedlem sedan okt. 2004386 inlägg
#11

Jag har redan en innerHTML och innerText

function setMode(bMode) 
{
if (bMode!=g_state.bMode) {
g_state.bMode = bMode
var objBody = idEditbox.document.body
if (!bMode&& !g_state.bMode) 
{
_CPopup_Hide()
objBody.bgColor = objBody.style.cssText = ""
if (g_state.customButtons)
idStandardBar.style.display = "none"
else
idToolbar.style.display = "none"
idEditbox.document.body.innerHTML = idEditbox.document.body.innerHTML.replace(/<br>/gi, "\n");
objBody.innerText = idEditbox.document.body.innerHTML
objBody.className = "textMode"
}
if ((bMode) && (g_state.bMode)) 
{
setDefaultStyle(g_state.css)
setBGColor(g_state.bgColor)
objBody.className = idStandardBar.style.display = idToolbar.style.display = ""
idEditbox.document.body.innerText= idEditbox.document.body.innerText.replace[B](/\n/gi, "<br>");[/B]
objBody.innerHTML = idEditbox.document.body.innerText
}
_setSize()
cbMode.checked = !bMode
_Editor_MoveSelection(true)
setFocus()
}	
return bMode
}

hur gör jag då???

Och än en gång

Snakes skrev:

förresten hur gör jag om jag vill ha tvärtom, från
txt.replace(/<br>/gi, "\n");
till
txt.replace(/\n/gi, "<br>");
eller?

SnakesMedlem sedan okt. 2004386 inlägg
#12

Hittade hur man ändrar
txt.replace(/<br>/gi, "\n");
till
txt.replace(/\\n/gi, \"<br>\");

Peter SMedlem sedan dec. 20025 484 inlägg
#13

Om jag får citera Mattias:

Hur vill du ha det då - ska HTML-taggar plockas bort eller inte?
Om svaret är "ibland", vilka regler är det som ska gälla?

:)

125 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
123 ms — hämta tråd, inlägg och bilagor (db)