Avatar billede dehaas Nybegynder
15. august 2006 - 20:55 Der er 19 kommentarer og
1 løsning

Læs fil, <body> content

Hej,

Jeg sidder for føste gang og skulle lave noget CMS. Jeg har brug for at læse en fil, men kun få de linjer koder der sår mellem <body> og </body>. Hvordan gør jeg nemmest det?

Jeg skriver vb.net.
Avatar billede arne_v Ekspert
15. august 2006 - 21:01 #1
du kunne fiske det ud med regex
Avatar billede websam Nybegynder
15. august 2006 - 21:11 #2
Må jeg spørge hvad du skal bruge det til i forbindelse med et CMS ?
Avatar billede dehaas Nybegynder
15. august 2006 - 21:15 #3
Arne: Hvad er regex?

Websam: Går lidt og eksperimenterer med hvordan jeg vil lave det. Lige nu vil jeg prøve at kunne lade brugeren ændre alt body-content, ved brug af et RichTextBox-lignende objekt.
Avatar billede websam Nybegynder
15. august 2006 - 21:24 #4
Så vil jeg da gemme det hele i et felt i databasen og blot hente og gemme det derfra
Avatar billede arne_v Ekspert
15. august 2006 - 21:25 #5
regular expression
Avatar billede arne_v Ekspert
15. august 2006 - 21:27 #6
utestet:

Regex.Matches(s, "(?:<body>)(\.*?)(?:</body>)")(0).Groups(1).Value
Avatar billede dehaas Nybegynder
15. august 2006 - 21:32 #7
Websam: Jo, det har jeg også tænkt på. Men tænkte jeg også lige ville forsøge med det her. Kunne også være lidt smart hvis jeg kunne gemme alt under App_LocalResource

Arne: Hmm. Eftersom jeg aldrig før har leget med Regex. Vil det være muligt at få en lille forklaring på hvordan det virker. Har det ikke så godt med at bruge ting jeg ikke har styr på :)
Avatar billede websam Nybegynder
15. august 2006 - 21:37 #8
Jeg tror du får et mere fleksibelt system ved at have et felt i din database der indikere sproget end at skulle gemme det hele i fysiske filer på serveren.

Men blot en ide.

/Websam
Avatar billede websam Nybegynder
15. august 2006 - 21:43 #9
Du kunne prøve at tjekke dette starter-kit ud :

http://www.asp.net/downloads/starterkits/#beerhouse
Avatar billede arne_v Ekspert
15. august 2006 - 21:49 #10
der var en slash for meget

        Dim htmlstr As String = "a b c<body>d e f</body>g h j"
        Dim bodystr As String = Regex.Matches(htmlstr, "(?:<body>)(.*?)(?:</body>)")(0).Groups(1).Value
Avatar billede arne_v Ekspert
15. august 2006 - 21:49 #11
du kan soege efter regex - der er masser af tutorials paa nettet
Avatar billede arne_v Ekspert
15. august 2006 - 21:50 #12
hvorvidt det her er smart for et CMS ligger uden for min viden
Avatar billede websam Nybegynder
15. august 2006 - 22:55 #13
Jeg ville ikke gøre det da det virker på mig som om han vil lave fysiske filer på serveren. Alle de CMS'er jeg har set er alle bygget op omkring en database.

/Websam
Avatar billede ismand Nybegynder
17. august 2006 - 02:21 #14
Må jeg anbefale dig at prøve: FCKeditor som editor. Den kan uden tvivl alt det du skal bruge ved en editor. Og så kan du tilmed skinne den som du vil, og redigere toolbars :) -- Giv den en chance
Avatar billede dehaas Nybegynder
18. august 2006 - 22:41 #15
Hej, beklager jeg først får svaret nu.

Arne: Hmm, jeg har prøvet din kode, jeg har skrevet sådan:

        Dim Reader As New System.IO.StreamReader(Server.MapPath("~/wikwak.aspx"))
        Label1.Text = Regex.Matches(Reader.ReadToEnd(), "(?:<body>)(\.*?)(?:</body>)")(0).Groups(1).Value
        Reader.Close()

Men jeg får denne fejl:

Specified argument was out of the range of valid values.
Parameter name: i

Websam: Jeg kommer nok også til at have data til at ligge i en database, jeg er som sagt bare ved at prøve lidt forskellige muligheder af. Men jeg kan da ikke undgå at have fysiske filer på serveren?

Ismand: Jeg har hentet den, og er ved at prøve den af. Synes den ser ud til at virke ganske godt. Tilmed er den jo OpenSource så jeg kan jo lave om lige hvad jeg vil :)
Avatar billede dehaas Nybegynder
18. august 2006 - 22:51 #16
Arne: Glemte lige der var en master-side tilknyttet til wikwak.aspx, så jeg har lige lavet koden om. Det virker dog stadig ikke:

        Dim start As String = "<asp:Content ID=" + """Content1""" + " ContentPlaceHolderID=" + """ContentPlaceHolder""" + " Runat=" + """Server""" + ">"
        Dim slut As String = "</asp:Content>"
       
        Dim Reader As New System.IO.StreamReader(Server.MapPath("~/wikwak.aspx"))
        Label1.Text = Regex.Matches(Reader.ReadToEnd(), "(?:" + start + ")(\.*?)(?:" + slut + ")")(0).Groups(1).Value
        Reader.Close()

Wikwak.aspx ser sådan ud:

<%@ Page Language="VB" MasterPageFile="~/App_Layout/MasterPage.master"Title="Untitled Page" %>
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
  Dim TitleInfo As New Title
  Me.Title = TitleInfo.IndividualName("wikwak")
End Sub
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder" Runat="Server">
sdfh<STRONG>gfdg </STRONG><EM><U>HABTIBbvvbcvb</U></EM></asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="NewsPlaceHolder" Runat="Server">
</asp:Content>
Avatar billede websam Nybegynder
18. august 2006 - 23:29 #17
Selvfølgelig kan du ikke undgå at have fysiske filer på serveren der skal jo være nogle sider til at håndtere dine data fra databasen.

Det jeg vil frem til er at du vil ændre html'en direkte i en fysisk fil frem for at have den tekst liggende i en database det er IKKE hensigts mæssigt i mine øjne.

/Websam
Avatar billede arne_v Ekspert
19. august 2006 - 01:55 #18
Label1.Text = Regex.Matches(Reader.ReadToEnd(), "(?:" + start + ")(.*?)(?:" + slut + ")", RegexOptions.Singleline)(0).Groups(1).Value
Avatar billede dehaas Nybegynder
20. august 2006 - 21:58 #19
herligt, jamen det virker jo nu.

Smid et svar
Avatar billede arne_v Ekspert
20. august 2006 - 22:30 #20
svar
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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