Avatar billede kotelet Nybegynder
02. april 2001 - 18:59 Der er 11 kommentarer og
1 løsning

Gæstebog i PERL

Hej jeg sidder i øjeblikket med et gæstebog-script jeg har hentet ned fra matts script archive.

I scriptet får man muligheden for at vøælge om brugeren skal kunne lave linieskift ... den del af scriptet ser sådan ud:

$line_breaks == 1;

  if ($line_breaks == 1) {
        $FORM{\'comments\'} =~ s/\\cM\\n/<br>\\n/g;
      }

      print GUEST \"$FORM{\'comments\'}<br><br><hr height=1 color=white>\";

Nu vil jeg gerne lave en del af scriptet der gør, at man kan indsætte et slags ikon feks ved at skrive (H) og så indsætter scriptet et hjerte-ikon i gæstebogen. Hvordan retter jeg det til?

En medfølgende forklaring ville være rar!

Husk at dette er PERL .. ikke php
Avatar billede thomasledet Nybegynder
02. april 2001 - 21:43 #1
en god idé ville nok være at erstatte H med [H]....

så skal du bare tilføje disse to linier til dit script...

$ting=\'<A href=\"url til billede\" border=\"0\">\';
$FORM{\'comments\'}=~s/\\[H\\]/$ting/gi;

held og lykke!
Avatar billede kotelet Nybegynder
03. april 2001 - 00:12 #2
Hej .. tak for svaret ... men betyder dette at når man skriver (H) .. dvs MED parantes om H\'et så viser den et billede i stedet for (H) ?

Og kan du kort forklare hvad de forskellige ting betyder? .. så smider jeg 10 point oveni ...

}=~s/\\[H\\]/$ting/gi; 
hvad betyder =~
hvad betyder s/
----||------  /gi; og hvorfor bruger man [ ] ?

Avatar billede thomasledet Nybegynder
03. april 2001 - 00:32 #3
=~s betyder substitution... altså udskiftning... denne foregår ved hjælp af regulære udtryk, som er en af grundstenene i PERL prorgrammering... når man skriver =~s/this/that/ betyder det, at man ønsker alle steder, hvor der står \"this\" ud skiftet med \"that\".... ~ er en match binding operator... det betyder, at alt, hvad der sker skal foregå i den variabel, man har angivet...

havde man skrevet:

$x=/noget/; ville PERL have gennemsøgt standard variablen ($_) for \"noget\" og smidt resultatet ind i $x...

skriver man i stedet:
$x=~/noget/; søges der i $x variablen og resultatet \"smides væk\"... det er her s/// operatoren kommer ind i billedet, da man jo netop ønsker en udskiftning...

de sidste /gi betyder \"greedy\"... med andre ord skal PERL være \"grådig\" og ikke stoppe første gang det støder på \"noget\".... det skal blive ved til slutningen af strengen... i\'et betyder at der ikke skal tages højde for store og små bogstaver (ignore case)... med andre ord... skriver man [h] eller [H]... så er PERL ligeglad og udskifningen foretages alligevel... ønsker man ikke at PERL skal ignorere om det er store eller små bogstaver skal man undlade at indsætte i\'et...

var det svar nok?
Avatar billede thomasledet Nybegynder
03. april 2001 - 00:33 #4
der er ikke nogen grund til at bruge [ ] ... grunden til at jeg foreslog brugen af [ ] i stedet for ( ) er, at folk sjældent benytter [ ] til forskel fra parenteser...  folk skal jo indsætte hjertet med vilje og ikke ved et uheld...
Avatar billede thomasledet Nybegynder
03. april 2001 - 00:40 #5
ønsker du at lære en smule om PERL kan jeg anbefale dig at købe bogen \"Learning Perl\" af Randal Schwartz og Tom Christiansen (ISBN: 1-56592-284-0)

Har du en smule forstand på PERL, men ønsker et dybere kendskab til de forskellige funktioner og operatorer kan jeg anbefale \"Programming Perl\" af Larry Wall, Tom Christiansen og Randal Schwartz (ISBN: 0-56592-149-6) (der er vist forøvrigt kommet en ny version af bogen...)

Ønsker du dybdegående forståelse for regulære udtryk og alt, hvad de kan bruges til, kan jeg anbefale \"Mastering Regular Expressions\" af Jeffrey Friedl (ISBN: 1-56592-257-3)

Alle ovenstående bøger er udgivet af forlaget O\'Reilly and Associates Inc.
Avatar billede breum Nybegynder
03. april 2001 - 09:18 #6
Jeg har allerede givet dig svaret på http://www.eksperten.dk/spm/61583
Avatar billede breum Nybegynder
03. april 2001 - 09:20 #7
Jeg svarede et par timer før du oprettede spørgsmålet igen
Avatar billede breum Nybegynder
03. april 2001 - 09:24 #8
Kotelet>>Det er ikke fordi du skal give mig pointsene, jeg vidste godt at jeg ikke fik point da jeg svarede, men det har jo været spild at Thomas tid, det er ellers et glimrende svar!

Thomas>>Meningen med det du skriver er korrekt, men g står nu for global og i for insensitiv, men som sagt meningen er korrekt.
Avatar billede thomasledet Nybegynder
03. april 2001 - 10:35 #9
breum>ja... det er jeg godt klar over... men mine \"definitioner\" er gode måder at huske på, hvad det egentlig er, de gør... derfor!
Avatar billede thomasledet Nybegynder
03. april 2001 - 10:52 #10
hmm... jeg sidder lige og kigger på min kode i mit første svar...

i $ting skal der selvfølgelig ikke stå \'<A href=\"blablabla\">\'... der skal jo stå \"<IMG src=\"url til billede\" border=\"0\">\'... det var mig, der lige var lidt for træt, da jeg svarede...
Avatar billede webgeniet Nybegynder
23. april 2001 - 17:40 #11
Før den skriver ud på skærmen, skriv:

billede_html = \"<img src=\"h.gif\">\";

$FORM{\'comments\'} =~ s/H/$billede_html/g;

Så skulle den skifte H ud med et billede.
Jeg har ikke rigtigt sat mig ind i problemet, men jeg prøver bare at komme med et svar.
Avatar billede kotelet Nybegynder
03. maj 2001 - 12:55 #12
Undskyld ventetiden og tak for svaret :-)

Kotelet
AKA
Andreas
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