Just nu i M3-nätverket
Jump to content

regexp


Badtant

Recommended Posts

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]

Link to comment
Share on other sites

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?

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...