Avatar billede nomak Nybegynder
23. januar 2003 - 22:48 Der er 8 kommentarer og
1 løsning

Smilies replacement - MED LIMIT!

Hejsa Experter!

Jeg har lavet følgende kode til at replace smilies på min tagwall - problemet er bare at nogle idi*ter ikke kan styrer sig med dem! Har jeg en mulighed for at begrænse antallet af smilies den skal konvatere i $text strengen til f.eks. 3 smilies?

Jeg har flg. kode:
---------------------------------------------------

<?

$smil_sti = "./img";

if ($handle = opendir($smil_sti))
{

    while (false !== ($file = readdir($handle)))
    {

        if ($file != "." && $file != "..")
        {

            if (!isset($smil_arr))
            {
                $smil_arr = array($file);
            }

            else
            {
                array_push($smil_arr, $file);
            }
        }
    }

    closedir($handle);
}

$smil_count = count($smil_arr);

$code_arr = array("-I", "*br&aelig;k*", ";)", ":I", "you got mail", "rend mig", "8D", ";-P", "*danser*", "B)", "FOAD", "*kv&aelig;k*", "pacman", "*idiot*", ":o)", "*elsker dig*", "*love you*", "LUFFE", "*nasty*", "}:)", ":(", ":O", "gab", "*t&aelig;sk*", ":)", " /\\", "SmokeDaBuddah", "*sut*", ":D", ":P", "[:]", "[?]", "*WordUp*", "*jul*");
$code_count = count($code_arr);

for ($i=0;$i<$code_count;$i++)
{
        $text = str_replace($code_arr[$i], "<img src=img/$smil_arr[$i]>", $text);
}
?>

På forhånd tak!
Avatar billede _darkstar_ Nybegynder
23. januar 2003 - 23:45 #1
Over

$text = str_replace($code_arr[$i], "<img src=img/$smil_arr[$i]>", $text);

sætter du dette ind:

$text = ereg_replace("/($code_arr[$i]\s*){4,}/","$code_arr[$i]$code_arr[$i]$code_arr[$i]");

Det er ikke pænt, men det burde virke.
Avatar billede Slettet bruger
24. januar 2003 - 00:25 #2
Hmm... en hurtigere udgave vil jeg tro... men stadig ingen overordnet begrænsning!
Idioten kan stadig smide 4 smillies af alle typer!
$smillies = array(   
    "-I",
    "\\*br&aelig;k\\*",
    ";\\)",
    ":I",
    "you got mail",
    "rend mig",
    "8D",
    ";-P",
    "\\*danser\\*",
    "B\\)",
    "FOAD",
    "\\*kv&aelig;k\\*",
    "pacman",
    "\\*idiot\\*",
    ":o\\)",
    "\\*elsker dig\\*",
    "\\*love you\\*",
    "LUFFE",
    "\\*nasty\\*",
    "\\}:\\)",
    ":\\(",
    ":O",
    "gab",
    "\\*t&aelig;sk\\*",
    ":\\)",
    "\s\/\\\\",
    "SmokeDaBuddah",
    "\\*sut\\*",
    ":D",
    ":P",
    "\\[:\\]",
    "\\[\\?\\]",
    "\\*WordUp\\*",
    "\\*jul\\*");
for($i=0;$i<count($smillies);$i++)
{
    $smillies[$i] = "/".$smillies[$i]."/";
}
$text = preg_replace($smillies, $smil_arr, $text, 1);
Avatar billede Slettet bruger
24. januar 2003 - 00:26 #3
Hmm.... det sidste parameter "1" kan selvfølgelig ændres til hvilket som helst hel tal! Det er grænsen for antallet af smillies!
Avatar billede _darkstar_ Nybegynder
24. januar 2003 - 08:49 #4
Tjaeh. Det var faktisk med vilje at jeg lavede mit forslag sådan at man godt måtte lave flere end 3 smilies hvis de var forskellige.

Der er en grænse for hvor paranoide, vi kan være. Dit script vil f. eks. ikke håndtere hvis nogen skriver

:-) :-) :-)

Altså med mellemrum imellem. Hvis du så tager højde for det, kan man bare skrive

:-) | :-) | :-)

...og så vil det ingen ende tage. Det eneste sted hvor det stopper er hvis man laver en kvota på tre smilies for *hele* indlægget. Det kan jeg ikke forestille mig at brugerne ville synes var specielt sjovt.
Avatar billede Slettet bruger
24. januar 2003 - 09:13 #5
darstar>>Underligt, men det virker skam fint ved mig!

Kan du ikke underbygge din påstand lidt grundigere!?
Avatar billede _darkstar_ Nybegynder
24. januar 2003 - 09:16 #6
Det synes jeg godt nok at jeg har.

Hvad med at stille et specifikt spørgsmål til det som jeg har skrevet?
Avatar billede Slettet bruger
24. januar 2003 - 09:18 #7
Hvorfor håndterer mit script ikke nedenstående???
:-) :-) :-)

Altså med mellemrum imellem. Hvis du så tager højde for det, kan man bare skrive

:-) | :-) | :-)
Avatar billede nomak Nybegynder
27. januar 2003 - 19:11 #8
Bruger regin's løsning.. den virkede bedst efter mit behov.. smid et svar regin :)
Avatar billede Slettet bruger
27. januar 2003 - 22:20 #9
:D
    Anytime.... :)
:P
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