webForumDet fria alternativet

RegExp - Tillåt lite koder liknande HTML.

ASP

16 svar · 756 visningar · startad av Akerlundh

Medlem sedan maj 20031 682 inlägg
Frågan#1

Hejsan.

Jag har läst lite arliklar om regexp nu och sökt lite i forumet.
Det är några tecken jag vill att man ska kunna använda i mitt nyhetsscript.

Men jag har fastnat totalt i koden nu.
Detta är allt jag har fått fram, men vad jag har förstått så måste det finnas mer saker för att den ska fungera.

Något i stil med function i början utav koden.

With New RegExp

  .Global = True
  .IgnoreCase = True

  .Pattern = "\[i\]([\w\W]*?)\[/i\]"
  strValue = .Replace(strValue,"<i>$1</i>")

  .Pattern = "\[u\]([\w\W]*?)\[/u\]"
  strValue = .Replace(strValue,"<u>$1</u>")

  .Pattern = "\[img\]([\w\W]*?)\[/img\]"
  strValue = .Replace(strValue,"<img src="$1">")

  .Pattern = "\[red\]([\w\W]*?)\[/red\]"
  strValue = .Replace(strValue,"<font color="FF0000">$1</font>")

End With

Någon som kan hälpa mig att vidar utveckla koden.
Och gärna förklara hur jag ska använda den ihop med denna lilla kod snutt.

<%=objRS("värde")%>
Medlem sedan juni 20019 519 inlägg
#2
With New RegExp
strValue = replace(strValue,"<", "&lt;")
strValue = replace(strValue,">", "&gt;")

  .Global = True
  .IgnoreCase = True

  .Pattern = "\[i\]([\w\W]*?)\[/i\]"
  strValue = .Replace(strValue,"<i>$1</i>")

  .Pattern = "\[u\]([\w\W]*?)\[/u\]"
  strValue = .Replace(strValue,"<u>$1</u>")

  .Pattern = "\[img\]([\w\W]*?)\[/img\]"
  strValue = .Replace(strValue,"<img src="$1">")

  .Pattern = "\[red\]([\w\W]*?)\[/red\]"
  strValue = .Replace(strValue,"<font color="FF0000">$1</font>")

End With

borde räcka (ej RegExp)... eller vill du plocka bort alla html taggar innan du kör dom andra scripten?eller vill du tillåta vanliga html taggar (som du själv bestämmer?)

red. Missförstod dig

Function MakeHTML(strValue)

With New RegExp

  .Global = True
  .IgnoreCase = True

  .Pattern = "\[i\]([\w\W]*?)\[/i\]"
  strValue = .Replace(strValue,"<i>$1</i>")

  .Pattern = "\[u\]([\w\W]*?)\[/u\]"
  strValue = .Replace(strValue,"<u>$1</u>")

  .Pattern = "\[img\]([\w\W]*?)\[/img\]"
  strValue = .Replace(strValue,"<img src="$1">")

  .Pattern = "\[red\]([\w\W]*?)\[/red\]"
  strValue = .Replace(strValue,"<font color="FF0000">$1</font>")

End With
MakeHTML = strValue
End Function

Response.Write MakeHTML(Recset("something"))
Medlem sedan maj 20031 682 inlägg
#3

/red

Så här skriver jag istället.

Så denna koden fungerar då och gör även så att man inte kan använda några andra html uttryck?

Och då även så att det blir automatiskt radbryte? (Ändrade lite i koden)

Function MakeHTML(strValue)

With New RegExp
strValue = replace(strValue,"<", "&lt;")
strValue = replace(strValue,">", "&gt;")
strValue = replace(str, vbCrLf, "<br>")

  .Global = True
  .IgnoreCase = True

  .Pattern = "\[i\]([\w\W]*?)\[/i\]"
  strValue = .Replace(strValue,"<i>$1</i>")

  .Pattern = "\[u\]([\w\W]*?)\[/u\]"
  strValue = .Replace(strValue,"<u>$1</u>")

  .Pattern = "\[img\]([\w\W]*?)\[/img\]"
  strValue = .Replace(strValue,"<img src="$1">")

  .Pattern = "\[red\]([\w\W]*?)\[/red\]"
  strValue = .Replace(strValue,"<font color="FF0000">$1</font>")

End With
MakeHTML = strValue
End Function

Response.Write MakeHTML(Recset("something"))
Medlem sedan juni 20019 519 inlägg
#4

ja om du vill ersätta alla <html> taggar till "inget" så får du göra ett RegExp uttryck för det. dvs:

"<b>hej</b>" på dig blir "hej på dig":

Högst upp efter With

  .Pattern = "</?[^>]+>"
  strValue = .Replace(strValue,"")
Medlem sedan maj 20031 682 inlägg
#5

Okej.

Nu får jag detta felet

Körningsfel i Microsoft VBScript fel '800a005e'

Ogiltig användning av Null: 'replace'

Och raden det är fel på ser ut så här.

strValue = replace(strValue,"<", "&lt;")

Jag testade tabort den raden innan men då skriver den inte ut något ifrån den kolumnen jag valt.
Jag skriver ut allt igenom denna koden

<%=MakeHTML(objRS("news"))%>
Medlem sedan juni 20019 519 inlägg
#6

För ditt ObjRs innehåller ingen data:

<%=MakeHTML(objRS("news") & "")%>
Medlem sedan maj 20031 682 inlägg
#7

Opps, gjorde en miss där!

Men nu innehåller det data men skriver inte ut något endå!

/red

Skriver jag ut det vanligt utan att använda Replace så skriver det ut data.

Medlem sedan juni 20019 519 inlägg
#8

du skriver fel:

strValue = replace(str, vbCrLf, "<br>")

str finns inte = tomt:

strValue = replace([b]strValue[/b], vbCrLf, "<br>")
Medlem sedan maj 20031 682 inlägg
#9

Ajdå!

Vad mycket missar.
Men nu verkar allt stämma.
men om jag skriver så visar den ingenting utav det, verkar som den hoppar över

Medlem sedan juni 20019 519 inlägg
#10

för det första så förstår jag inte hur din funktion klara sig:

  .Pattern = "\[img\]([\w\W]*?)\[/img\]"
  strValue = .Replace(strValue,"<img src="$1">")

Den koden borde inte fungera:

  .Pattern = "\[img\]([\w\W]*?)\[/img\]"
  strValue = .Replace(strValue,"<img src=""$1"">")
Medlem sedan maj 20031 682 inlägg
#11

voigtann1 skrev:

för det första så förstår jag inte hur din funktion klara sig:

  .Pattern = "\[img\]([\w\W]*?)\[/img\]"
  strValue = .Replace(strValue,"<img src="$1">")

Den koden borde inte fungera:

  .Pattern = "\[img\]([\w\W]*?)\[/img\]"
  strValue = .Replace(strValue,"<img src=""$1"">")

Jag hade inte skrivit med "" utan med '' så därför den funderade förmodligen.
Men den du skrev nu gör ingen skillnad.

Medlem sedan juni 20019 519 inlägg
#12

Visa källa och se vad som händer vad skickar du in till funktionen och vad skrivs ut från funktionen?

Medlem sedan maj 20031 682 inlägg
#13

voigtann1 skrev:

Visa källa och se vad som händer vad skickar du in till funktionen och vad skrivs ut från funktionen?

Hur menar du nu?
Att ja ska visa källan i typ IE eller FF och kolla om koden skrivs ut ?
Är lite lost nu!

Medlem sedan juni 20019 519 inlägg
#14

Ja.. Visa källa för att se vad som skrivs ut.

Jag testade: asdas och det fungerade för mig:

Function MakeHTML(strValue)
	strValue = replace(strValue,"<", "&lt;")
	strValue = replace(strValue,">", "&gt;")
	strValue = replace(strValue, vbCrLf, "<br>")
	With New RegExp
		.Global = True
		.IgnoreCase = True

		.Pattern = "\[i\]([\w\W]*?)\[/i\]"
		strValue = .Replace(strValue,"<i>$1</i>")

		.Pattern = "\[u\]([\w\W]*?)\[/u\]"
		strValue = .Replace(strValue,"<u>$1</u>")

		.Pattern = "\[img\]([\w\W]*?)\[/img\]"
		strValue = .Replace(strValue,"<img src=""$1"">")

		.Pattern = "\[red\]([\w\W]*?)\[/red\]"
		strValue = .Replace(strValue,"<font color=""#FF0000"">$1</font>")

	End With
	MakeHTML = strValue
End Function
Response.Write MakeHTML("asdas[img]http://www.webforum.nu/images/wfstandard/logo_webforum.gif[/img]")
Medlem sedan maj 20031 682 inlägg
#15

Nu funkar det för mig.

Dock visar han inte bilden men den finns med i källkoden så nu är det bara någon liten finjustering som behövs!

Tack för hjälpen!

Medlem sedan juni 20019 519 inlägg
#16

vad blir fel? Hur ser texten ut innan funktionen körs och hur ser texten ut efter att funktionen har körts?

Medlem sedan maj 20031 682 inlägg
#17

voigtann1 skrev:

vad blir fel? Hur ser texten ut innan funktionen körs och hur ser texten ut efter att funktionen har körts?

Det funkade sen. Startade om FF sen laddade den bilden riktigt.

Tack för hjälpen!

263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)