FAQ |
Kalender |
2007-03-03, 15:55 | #1 | |||
|
||||
Klarade millennium-buggen
|
Sitter och snickrar på ett CMS och jag vill hitta ett sätt att länka mellan orlika artiklar jag har i databasen.
Jag vill i artikeltexten skriva [[18,Min rubrik]] Jag vill ha ett script som letar igenom texten efter [[]] och tar informationen som är mellan tecknen och lägger i varsin variabel. fixtext("Hejsan [[18,hopsan 123]]") skall altså resultera i Hejsan hopsan 123 Någon som kan hjälpa mig med detta? Språket är ASP. |
|||
Svara med citat |
2007-03-03, 16:05 | #2 | ||
|
|||
Medlem
|
Ett enkelt sätt att göra det är att använda Regular expressions. Hur man gör i ASP vet jag inte.
Exempeluttryck: Kod:
#\[\[(.*?),(.*?)\]\]#s Kod:
$text = 'text, lala, [[18,Min rubrik]]. Men kanske'; $text = preg_replace('#\[\[(.*?),(.*?)\]\]#s', '<a href="\\1">\\2</a>', $text); echo $text; /** skriver ut: * text, lala, <a href="18">Min rubrik</a>. Men kanske */ |
||
Svara med citat |
2007-03-03, 16:39 | #3 | |||
|
||||
Klarade millennium-buggen
|
Ah, tack!
Fick till det i ASP såhär: Kod:
<% min_text = "text, lala, [[18,Min rubrik]]. Men kanske" Set RegularExpressionObject = New RegExp With RegularExpressionObject .Pattern = "\[\[(.*?),(.*?)\]\]" .IgnoreCase = True .Global = True End With ny_text = RegularExpressionObject.Replace(min_text, "<a href=$1>$2</a>") %> Databasen heter artiklar, den har följande tabeller: id, seo_url, artikel_text Någon idé på hur jag kan göra detta... |
|||
Svara med citat |
2007-03-03, 18:33 | #4 | |||
|
||||
Klarade millennium-buggen
|
Det jag vill göra är altså att varje gång den hittar en match så skulle jag vilja köra en liten extra rad asp-kod på just det id-numret.
|
|||
Svara med citat |
2007-03-03, 18:52 | #5 | ||
|
|||
Medlem
|
Jag vet åter igen inte hur man gör i ASP. Men det borde finnas liknande funktionalitet.
Här är ett exempel på hur man gör i PHP: Kod:
<?php $text = 'text, lala, [[18,Min rubrik]]. Men kanske'; $text = preg_replace('#\[\[(.*?),(.*?)\]\]#es', 'foo("\\1", "\\2")', $text); echo $text; function foo($id, $subject) { /** utför här en databasfråga med hjälp av $id */ $url = 'min_rubrik.html'; /** resultatet från databasen */ return sprintf('<a href="%s">%s</a>', $url, $subject); } ?> Kod:
text, lala, <a href="min_rubrik.html">Min rubrik</a>. Men kanske Med andra ord, själva texten som skall ersättas stoppar man in i en funktion. Detta gör man med hjälp av någon modifier i sökuttrycket (eller kanske genom attribut till regular expression-objektet). |
||
Svara med citat |
Svara |
|
|