Avatar billede jessbonde Nybegynder
26. oktober 2010 - 12:50 Der er 6 kommentarer og
1 løsning

Function der parser str til html

Hejsa.
Jeg har en text streng hvor jeg gerne vil indtaste i teksten hvor der skal vises en video. F.eks:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. [Video='G0AV0jr1zNA']Sed at mollis lectus. Nulla ante lectus, adipiscing [Video='Db6NLj5hUHo'] non fermentum non, consectetur vitae odio.

Dvs. [Video='G0AV0jr1zNA'] skal parses om til noget der embedder et billede der linker til den rigtige youtube video.

Jeg vil gerne have outputtet til at se således ud for hver video:

<a href="http://www.youtube.com/watch?v=G0AV0jr1zNA" rel="fancyvideo">
    <span class="imageThumbs thumbMedium" style="cursor:hand;cursor:pointer;">
        <span class="art"><img src="http://img.youtube.com/vi/G0AV0jr1zNA/default.jpg" alt="" border="0"></span>
        <span class="gradientOverlayVideo"></span>
    </span>
</a>

Jeg går ud fra at id'et skal trækkes ud for hver 'video embed' og så er det jo ligetil at generere hele html strengen. Men der kan være flere embed koder i tekst strengen og der rækker mine script evner ikke.

Er der nogen der kan hjælpe med det?
Avatar billede jannick281090 Nybegynder
26. oktober 2010 - 14:34 #1
Prøv det her stykke kode, og vend tilbage med et svar :)

<%
    Function ReplaceRegExp(strString, strPattern, strReplace)
        Dim RE: Set RE = New RegExp
        With RE
            .Pattern = strPattern
            .Global = True
            ReplaceRegExp = .Replace(strString, strReplace)
        End With
    End Function
   
    MyHTML = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " _
            "[Video='G0AV0jr1zNA']Sed at mollis lectus. Nulla ante lectus, " _
            "adipiscing [Video='Db6NLj5hUHo'] non fermentum non, consectetur vitae odio."
   
    EmbedHTML = "<a href='http://www.youtube.com/watch?v=$1' rel='fancyvideo'>" _
                "<span class='imageThumbs thumbMedium' style='cursor:hand;cursor:pointer;'>" _
                "<span class='art'><img src='http://img.youtube.com/vi/$1/default.jpg' alt='' border='0'></span>" _
                "<span class='gradientOverlayVideo'></span>" _
                "</span>" _
                "</a>"
   
    MyHTML = ReplaceRegExp(MyHTML, "\[video=\'(.*)\'\]", EmbedHTML)
%>
Avatar billede jessbonde Nybegynder
26. oktober 2010 - 16:27 #2
Ok, jeg satte lige et & ved hvert variabel brud.

Hvis jeg uskriver MyHTML, så får jeg bare den oprindelige streng.
Der bliver ikke gjort noget ved den.
Avatar billede jannick281090 Nybegynder
27. oktober 2010 - 09:12 #3
Prøv og leg lidt med det, evt. undlad at bruge store bogstaver i dit video tag, da du jo bruger stort V i video.

Derudover kan du prøve selv at lege lidt med dit RegEx Pattern hvis ingen af disse fungerer.

\[video=\'([a-zA-Z0-9])\'\]
\[video=([a-zA-Z0-9])\] (Uden ''(pinger) omkring video id'et)
\[video=(.*)\] (Det samme, dog er alle tegn tilladt med den her)

Du kan også prøve at escape =(alligmed) da jeg ikke er sikker på om ASP's RegExp har reserveret det eller vil have alle specialtegn escaped.

Således:
\[video\=\'([a-zA-Z0-9])\'\]
Avatar billede jessbonde Nybegynder
27. oktober 2010 - 11:29 #4
Ok, det kører ret dårligt for mig.
Du har ret i det med stort V.

Det tætteste jeg kommer på noget der ligner noget er dette output:

---

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

<a href='http://www.youtube.com/watch?v=G0AV0jr1zNA']

Sed at mollis lectus. Nulla ante lectus, adipiscing

[video='Db6NLj5hUHo' rel='fancyvideo'><span class='imageThumbs thumbMedium' style='cursor:hand;cursor:pointer;'><span class='art'><img src='http://img.youtube.com/vi/G0AV0jr1zNA']

Sed at mollis lectus. Nulla ante lectus, adipiscing

[video='Db6NLj5hUHo/default.jpg' alt='' border='0'></span><span class='gradientOverlayVideo'></span></span></a>

non fermentum non, consectetur vitae odio.

---
Så den knækker et eller andet sted og det går over min forstand
Avatar billede jannick281090 Nybegynder
27. oktober 2010 - 13:23 #5
Satte lige min IIS Server op så jeg kunne teste mine rettelser inden jeg smider endnu et stykke ubrugeligt kode til dig.
Koder nemlig ikke ASP mere, jeg er for længst gået over til PHP :)

---

<%
    Function ReplaceRegExp(strString, strPattern, strReplace)
        Dim RE: Set RE = New RegExp
        With RE
            .Pattern = strPattern
            .Global = True
            .IgnoreCase = True
            ReplaceRegExp = .Replace(strString, strReplace)
        End With
    End Function
 
    MyHTML = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " & _
            "[video='G0AV0jr1zNA']Sed at mollis lectus. Nulla ante lectus, " & _
            "adipiscing [video =Db6NLj5hUHo] non fermentum non, consectetur vitae odio."
 
    EmbedHTML = "<a href='http://www.youtube.com/watch?v=$1' rel='fancyvideo'>" & _
                "<span class='imageThumbs thumbMedium' style='cursor:hand;cursor:pointer;'>" & _
                "<span class='art'><img src='http://img.youtube.com/vi/$1/default.jpg' alt='' border='0'></span>" & _
                "<span class='gradientOverlayVideo'></span>" & _
                "</span>" & _
                "</a>"
 
    MyHTML = ReplaceRegExp(MyHTML, "\[video\s*?=\s*?\'?([a-z0-9]*)\'?]", EmbedHTML)
   
    Response.Write MyHTML
%>

---

Den er nu case-insensitive, ligeglad med mellemrum, linjeskift og/eller tabs på hver side af alligmed(=) og den godtager tagget både med og uden pinger(')

Det eneste jeg har lavet om er at jeg har tilføjet ".IgnoreCase = True" til ReplaceRegExp funktionen og ændret RegExp Pattern så den stemmer overens med det du gerne vil have.

Og hvis du ikke ønsker at det er muligt at have mellemrum, linjeskift og/eller tabs før og/eller efter alligmed(=) så skal du istedet bruge det her pattern.

\[video=\'?([a-z0-9]*)\'?]

Eller hvis du har andre ønsker til dit tag så bare skriv :)
Avatar billede jessbonde Nybegynder
28. oktober 2010 - 13:59 #6
Fantastisk, tusind tak.
Du må gerne lave svar.

VH Jess
Avatar billede jannick281090 Nybegynder
29. oktober 2010 - 07:53 #7
Så lidt :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester