Avatar billede kohaar Nybegynder
18. juli 2003 - 18:07 Der er 23 kommentarer og
1 løsning

Regular Experssion

Jeg har et forum, hvor det er muligt at bruge smileys. Jeg bruger regular expression til at søge efter f.eks. :-) og så erstatte det med et billede. Mit problem er, at i et tilfælde bliver ") det samme som ;).

Her er koden:
--------------------
$patterns[0] = "/:\)/";
    $patterns[1] = "/;\)/";
    $patterns[2] = "/:D/";
    $patterns[3] = "/:\(/";
    $patterns[4] = "/:P/";
    $patterns[5] = "/:-\)/";
    $patterns[6] = "/;-\)/";
    $patterns[7] = "/:-D/";
    $patterns[8] = "/:-\(/";
    $patterns[9] = "/:-P/";
    $patterns[10] = "/:-p/";
    $patterns[11] = "/:sådan/";
    $patterns[12] = "/:lort/";
    $patterns[13] = "/:hvadskerderher/";
    $patterns[14] = "/:solbriller/";
    $patterns[15] = "/:bræk/";
    $replacements[0] = "<img src=\"smiley/smile.gif\" alt='Smiley' />";
    $replacements[1] = "<img src=\"smiley/wink.gif\" alt='Smiley' />";
    $replacements[2] = "<img src=\"smiley/biggrin.gif\" alt='Smiley' />";
    $replacements[3] = "<img src=\"smiley/sad.gif\" alt='Smiley' />";
    $replacements[4] = "<img src=\"smiley/tongue.gif\" alt='Smiley' />";
    $replacements[5] = "<img src=\"smiley/smile.gif\" alt='Smiley' />";
    $replacements[6] = "<img src=\"smiley/wink.gif\" alt='Smiley' />";
    $replacements[7] = "<img src=\"smiley/biggrin.gif\" alt='Smiley' />";
    $replacements[8] = "<img src=\"smiley/sad.gif\" alt='Smiley' />";
    $replacements[9] = "<img src=\"smiley/tongue.gif\" alt='Smiley' />";
    $replacements[10] = "<img src=\"smiley/tongue.gif\" alt='Smiley' />";
    $replacements[11] = "<img src=\"smiley/up.gif\" alt='Smiley' />";
    $replacements[12] = "<img src=\"smiley/down.gif\" alt='Smiley' />";
    $replacements[13] = "<img src=\"smiley/eek.gif\" alt='Smiley' />";
    $replacements[14] = "<img src=\"smiley/sun.gif\" alt='Smiley' />";
    $replacements[15] = "<img src=\"smiley/puke.gif\" alt='Smiley' />";
    $bodytext = preg_replace($patterns, $replacements, $data['bodytext']);
Avatar billede kohaar Nybegynder
18. juli 2003 - 18:09 #1
Lige en ting mere. Det er pattern nr. 1 det drejer sig om. Ved ikke særlig meget om ovenstående, så det er sikkert en nem fejl. Har prøvet at escape ;, men det gav intet resultat.
Avatar billede noden Nybegynder
18. juli 2003 - 18:19 #2
Jeg har en database "words" med det ord som skal være trigger og et som skal sætte billedet ind.
Dette virker fint!
Jeg vil også sige det er lidt mere sobert.

$cwordwrap = mysql_query("SELECT theword, replment FROM words");
        while ($cwords = mysql_fetch_row($cwordwrap))
        {
        $cmessage = str_replace($cwords[0], $cwords[1], $cmessage);
        }
Avatar billede kohaar Nybegynder
18. juli 2003 - 18:27 #3
Overvejede også selv str_replace, men vil jo gerne lære lidt mere om regular expressions, så en ide til hvad der kan være galt med det ville være lækkert.
Avatar billede Slettet bruger
18. juli 2003 - 18:31 #4
Fastholder du at problemet er, at ") bliver til samme grafik som ;) ?

Det kan jeg ikke se, kan lade sig gøre. Du matcher slet ikke på ")

Du er selvfølgelig opmærksom på, at du har flere at de samme grafikker du replacer med? ;) udskiftes eksempelvis med det samme som ;-)
Avatar billede tipsen Nybegynder
18. juli 2003 - 18:38 #5
Tror at det ville være en del hurtigere at benytte str_replace() til dette formål.
Avatar billede Slettet bruger
18. juli 2003 - 18:47 #6
tipsen: Nu ved jeg godt, det er din hobby at optimere ting. Men tror du virkeligt, det har nogen som helst praktisk betydning for spørgeren? Eller for et hvilket som helst forum, for den sags skyld. Hvor mange brøkdele af et sekund, tror du i værste fald det foretager at lave den udskifting?

Nu skriver manden oven i købet, gerne vil benytte regulære udtryk frem for str_replace.
Avatar billede erikjacobsen Ekspert
18. juli 2003 - 18:55 #7
Når spørgeren rent faktisk ikke bruger regulære udtryk, vil jeg da give
tipsen ret - det er ganske overflødigt
Avatar billede TRoXa Novice
18. juli 2003 - 18:57 #8
uanset hvad der er bedst så spørger han om en ting som han vil vide noget om .. så er det også den han skal have hjælp til hvis nogen kan :)
Avatar billede TRoXa Novice
18. juli 2003 - 19:03 #9
men Kohaar jeg har lige prøvet din kode .. og uhmm .. jeg kan ikke finde ud af hvad du mener .. har du en side du kan vise det på eller noget ?
Avatar billede tipsen Nybegynder
18. juli 2003 - 19:11 #10
mercur8: Det har måske ikke praktisk betydning for spørgeren nu, men kan måske få det senere og så kan man jo lige så godt få informationen med det samme, så man har den til senere brug! Hvad den konkrete tidsforskel er ved jeg ikke, men når der ikke benyttes noget som helst der lugter af et regulært udtryk ser jeg ingen grund til i praksis, at benytte funktioner der er designet til at arbejde med sådanne udtryk!

Derudover ville det da være synd, hvis spørgerne altid kun fik svar på præcis det de spurgte om, da det ofte er tilfældet at spørgsmålene ikke er helt præcise eller folk måske forfølger håbløse løsningsmetoder.

Jeg vil da håbe, at de svar og kommentarer jeg selv får på mine spørgsmål fortæller mig, hvis jeg er på vej ud i noget (unødvendigt) snavs.
Avatar billede Slettet bruger
19. juli 2003 - 05:11 #11
Jeg er enig. Men jeg elsker jeg også.
Avatar billede Slettet bruger
19. juli 2003 - 05:11 #12
jer også
Avatar billede kohaar Nybegynder
19. juli 2003 - 14:25 #13
Undskyld jeg ikke lige har svaret, men jeg har ikke været hjemme...

Siden kan ses på www.mdu-01e.dk med username test og kodeord test... Prøv at skrive ") og ;) i forumet, så vil i se at det samme billede dukker op...

Koden kan ses på http://kohaar.thoestesen.dk/mdu/forside.phps
Avatar billede erikjacobsen Ekspert
19. juli 2003 - 14:34 #14
Så er det ved fordi du laver ") om til &quot;)
Avatar billede kohaar Nybegynder
19. juli 2003 - 16:45 #15
Ahh... Ja det giver jo mening... Går ud fra at det er addslashes eller htmlspecialchars som jeg bruger idet jeg ligger teksten op i databasen der gør det.

Hvis du lige skriver et svar, får du dine point...
Avatar billede erikjacobsen Ekspert
19. juli 2003 - 17:09 #16
Det er htmlspecialchars - du bør nu først bruge den når du trækker det
ud igen. Men vi har jo ikke fået løst dit problem, vel?
Avatar billede kohaar Nybegynder
19. juli 2003 - 17:15 #17
hvis jeg bruger htmlspecialchars efter jeg laver sammenligningen med billederne, burde problemet vel være løst
Avatar billede erikjacobsen Ekspert
19. juli 2003 - 18:04 #18
*g* næh, det går ikke helt - prøv bare. Jeg prøver om jeg kan strikke lidt
sammen om lidt. Det kan være du faktisk får brug for et regulært udtryk eller to.
Avatar billede kohaar Nybegynder
19. juli 2003 - 18:32 #19
Kan self. også lave en søgning på &quot;) - og erstatte den med ")
Avatar billede erikjacobsen Ekspert
20. juli 2003 - 14:24 #20
Det er nemmere. Du erstatter bare med:

    $patterns[1] = "/(?<!&quot);\)/i";
Avatar billede kohaar Nybegynder
20. juli 2003 - 15:25 #21
Takker... Kom så med et svar, så du kan få dine points :-)
Avatar billede erikjacobsen Ekspert
20. juli 2003 - 15:40 #22
nå, ok, da.
Avatar billede Slettet bruger
21. juli 2003 - 00:49 #23
Så ryster jeg på hovedt imens.
Avatar billede erikjacobsen Ekspert
21. juli 2003 - 00:53 #24
over hvad?
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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