Just nu i M3-nätverket
Gå till innehåll

regexp


Badtant

Rekommendera Poster

håller på göra ett enkelt cms-system där personer utan html-kunskap ska kunna uppdatera sidor. som grund har jag använd systemet som används i phpBB (http://www.phpbb.com/). nu har säkert sett det användas på mänga ställen.

 

grejen är sen att det användaren har matat in ska översättas till regelrätt xhtml och detta görs då genom regexp.

 

jag har dessa funktioner i min cms:

b - fet

i - kursiv

u - understruken

link - länk

img - bild

center - centrera

code - tillåtelse att skriva kod direkt

 

för kursiv text skriver man då t.ex. text. och detta fixas om till rätt kodning med regexp. de enklaste funktionerna har jag fått till genom att läsa dessa sidor:

http://www.aspsidan.se/default.asp?page=readArticle&menu=2&aId=146

http://www.aspsidan.se/default.asp?page=readArticle&menu=2&aId=148

 

b:

re.Pattern = "\[b\]([\w\W]*?)\[/b\]"

str = re.Replace(str,"<b>$1</b>")

 

img:

re.Pattern = "\[img\]([\w\W]*?)\[/img\]"

str = re.Replace(str,"<img src=""images/$1""/>")

 

de jag har kvar är link och code.

 

vi börjar med link som skrivs av användaren såhär:[link=http://url]länktext[/link]

detta ska då bli <a href="http://url" target="_blank">länktext</a>

om länken inte inehåller http i början så ska heller inget target blank finnas med. hur läser man detta? kanske finns det något bättre sätt att märka upp det hela med för att få med både en url och en länktext?

 

det andra jag inte fått till är att tillåta kod. jag byter ut < mot < samt > mot >. detta ska dock inte göras på den text som står mellan code-elementen. hur åstadkommer jag detta?

 

hoppas någon av er är bra på detta!

 

[inlägget ändrat 2005-11-19 00:45:36 av Badtant]

[inlägget ändrat 2005-11-19 00:46:00 av Badtant]

Länk till kommentar
Dela på andra webbplatser

har fixat code nu!

 

har även ändrat lite på länkningen. nu märket jag upp det såhär:

[link]http://url'>http://url[text]länktext[/link]

 

jag kan plocka ut så att jag har detta kvar:

http://url[text]länktext

 

detta vill jag sedan dela upp i två delar där alltså [text] är separationsmarkeringen. hur gör jag för att plocka ut det som står innan respektive efter till två separata strängar? detta görs väl då antagligen med någon smart stränghantering och inte med regexp?

 

Länk till kommentar
Dela på andra webbplatser

detta görs väl då antagligen med någon smart stränghantering och inte med regexp?

 

Nä, regexp är utmärkt även för detta. Använd ex. (\S+)\[text\](\S+) som mönster och hämta ut de omgivande träffarna med $1 och $2

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...