Kom ihåg mig?
Home Menu

Menu


Länkar i text

Ämnesverktyg Visningsalternativ
Oläst 2007-03-03, 15:55 #1
fabians avatar
fabian fabian är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jul 2004
Inlägg: 2 162
fabian fabian är inte uppkopplad
Klarade millennium-buggen
fabians avatar
 
Reg.datum: Jul 2004
Inlägg: 2 162
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.
fabian är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-03, 16:05 #2
fors fors är inte uppkopplad
Medlem
 
Reg.datum: Aug 2006
Inlägg: 131
fors fors är inte uppkopplad
Medlem
 
Reg.datum: Aug 2006
Inlägg: 131
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
Exempel i PHP:
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 */
fors är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-03, 16:39 #3
fabians avatar
fabian fabian är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jul 2004
Inlägg: 2 162
fabian fabian är inte uppkopplad
Klarade millennium-buggen
fabians avatar
 
Reg.datum: Jul 2004
Inlägg: 2 162
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>")

%>
Nu har jag tänkt ännu längre, och skulle vilja putta in ett mysql-query som tar fram en SEO-vänlig url från den artikel som har id 18 i exemplet.

Databasen heter artiklar, den har följande tabeller: id, seo_url, artikel_text

Någon idé på hur jag kan göra detta...
fabian är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-03, 18:33 #4
fabians avatar
fabian fabian är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jul 2004
Inlägg: 2 162
fabian fabian är inte uppkopplad
Klarade millennium-buggen
fabians avatar
 
Reg.datum: Jul 2004
Inlägg: 2 162
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.
fabian är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-03, 18:52 #5
fors fors är inte uppkopplad
Medlem
 
Reg.datum: Aug 2006
Inlägg: 131
fors fors är inte uppkopplad
Medlem
 
Reg.datum: Aug 2006
Inlägg: 131
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);
}
?>
Resultat
Kod:
text, lala, <a href="min_rubrik.html">Min rubrik</a>. Men kanske
Man anropar således en funktion när man har hittat en träff. Det är bokstaven e i sökuttrycket som anger att en funktion skall anropas. Rent tekniskt så gör e så att PHP-kod exekveras. Nåväl, det borde finnas något liknande för ASP. Jag hoppas åtminstone att det kan vara till någon hjälp.

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).
fors är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 15:40.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017