webForumDet fria alternativet

regexp. Byta ut allt som hamnar "mellan" träffarna

ASP

1 svar · 244 visningar · startad av peppar

Medlem sedan dec. 2001873 inlägg
Frågan#1

Har en funktion som skall formatera en utskrift från ett formulär. Den ser ut så här ungefär:

Function ReplaceTags(strPattern, strReplace, strSource)
  Dim objRX
  set objRX = New RegExp
  objRX.IgnoreCase = True
  objRX.Global = True
  objRX.Pattern = strPattern

  ReplaceTags = objRX.Replace(strSource, strReplace)
End Function

strText = request.form("test")

'## -- Byt ut h[1-6]. mot validerande (x)html
strText = ReplaceTags("\h1. ((.|\s)*)\r", "<h1>$1</h1>", strText)
strText = ReplaceTags("\h2. ((.|\s)*)\r", "<h2>$1</h2>", strText)
strText = ReplaceTags("\h3. ((.|\s)*)\r", "<h3>$1</h3>", strText)
strText = ReplaceTags("\h4. ((.|\s)*)\r", "<h4>$1</h4>", strText)
strText = ReplaceTags("\h5. ((.|\s)*)\r", "<h5>$1</h5>", strText)
strText = ReplaceTags("\h6. ((.|\s)*)\r", "<h6>$1</h6>", strText)

'## -- Byt ut !em.emfaserat#em. -> <em>emfaserat</em>
strText = ReplaceTags("\!em.((.|\s)*)\#em.", "<em>$1</em>", strText)

'## -- Byt ut !i.italic#i. -> <i>Italic</i>
strText = ReplaceTags("\!i.((.|\s)*)\#i.", "<i>$1</i>", strText)

osv.
Jag vill få allt som är "omärkt" från formulärspostningen att hamna i en "<p></p>".
Det bör väl vara så att efter ett radbryt så sätts <p>, sen borde den leta efter en <h[1-6]>, <img> , eller en ny radbrytning och innan dom sätta slut </p>

Men, kan man gör ett enkelt (!) pattern för detta ändamål (jag har inte lyckats)... Kan man lägga in dom taggar man vill leta efter i en array och sedan använda den i sitt pattern? Om...? Hur gör man det?

Medlem sedan dec. 2001873 inlägg
#2

Har provat mig fram lite med varierande resultat. Så här ser det ut nu:

strText = ReplaceTags("(</h1>)|(</h2>)|(</h3>)|(</h4>)|(</h5>)|(</h6>)|(</img>)((.|\s)*)(<h1>)|(<h2>)|(<h3>)|(<h4>)|(<h5>)|(<h6>)|(<img>)", "$1<p></p>", strText)

resultatet blir då

<h1>rubrik
nytt stycke</h1><p></p>

Fast jag vill att det skal bli

<h1>rubrik</h1>
<p>Nytt stycke</p>

Vad är det som är galet?

262 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)