Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[php of javascript?] smilies replace

BasHamar
7 antwoorden
  • ik wil graag smilies (zoals[code:1:0bcce19e03] :P :D :) ;) [/code:1:0bcce19e03]) kunnen gebruiiken op mijn forum… (niet dat ie waarschijnlijk publiekelijk wordt maar oke…)
    nou heb ik eff zitten graven in de regular expression van php en ik kom daar uit op het volgende:
    [code:1:0bcce19e03]
    function($bericht)
    {
    $tonguit = '/:P/';
    $tonguitdir = "<img src='".$_SERVER['REQUEST_URI']."icons/puh2.gif'>";
    preg_replace($tonguit,$tonguitdir,$bericht);
    return $bericht
    }

    maar nu replact hij helemaal nix hij geeft nog steeds de
    :P weer.
    [/code:1:0bcce19e03]

    ik ben net nieuwe in reg exps dus misschien zie ik wat stoms over het hoofd maar zou iemand wat tips kunnen geven? op hoe hij wel kan werken..?
    inhoud bericht:
    [code:1:0bcce19e03]
    the forum is finally up and running :P
    [/code:1:0bcce19e03]
    dit wordt uit db getrokken…
  • Ik ben enige tijd geleden ook met iets dergelijks bezig geweest en kwam met de volgende code op de proppen:[code:1:e3694419d1]/*
    * Smileys definiëren
    */

    $smilies = array(":)", ";)", ":D");
    $smiliesPics = array("smile","wink","biggrin");

    for($i=0;$i<count($smilies);$i++){
    $smilies[$i] = str_replace(")","\)",$smilies[$i]);
    $smilies[$i] = str_replace("(","\(",$smilies[$i]);
    $smilies[$i] = str_replace(" ","\s",$smilies[$i]);
    }

    /*
    * Zoekpatroon en vervanging smileys
    */

    $patterns = array();
    $replacements = array();

    if($showSmileys){
    for($i=0;$i<count($smilies);$i++){
    array_push($patterns, "/\s(".$smilies[$i].")/");
    array_push($replacements, " <img src=\"/images/smilies/".$smiliesPics[$i].".gif\" alt=\"$1\" title=\"$1\" />");
    }}

    preg_replace($patterns, $replacements, nl2br(htmlentities(" ".$bericht));[/code:1:e3694419d1]Het zal geen prijzen winnen voor efficiency of overzichtelijkheid, maar het werkt prima!

    Let erop dat in de eerste array de smilies komen te staan, in de tweede array komen de bestandsnamen. De extensie ".gif" wordt er automatisch achter geplakt. Je moet het zelf even in een functie gooien, maar je komt hiermee wel een heel eind.

    - Bas
  • [quote:b1743b2415="bas"]
    Het zal geen prijzen winnen voor efficiency of overzichtelijkheid, maar het werkt prima! [/quote:b1743b2415]
    mijn gehele forum zal dat toch niet winnen want ik gebruik geen O.O.P om het te maken maar gewoon functioneel.. :D :P
    en af en toe toch een functie om het overzichtelijk te houden… :oops:

    [code:1:b1743b2415]
    if($showSmileys){ [/code:1:b1743b2415]

    kan jij mij dit even uit leggen dit snap ik niet (daar stikt ie ook op…:
    Notice: Undefined variable: showSmileys in c:\phpdev\www\forum\inc\config.php on line 65)

    en op de plek waar ie moet komen staat ook nix…

    als je de source wilt zien dan moet je het even melden…
    http://62.251.83.181/forum/viewtopic.php?t=1

    het gaat alleen nog om de 1ste post

    of iemand moet dat wat ik heb gemaakt kunnen aan passen zodat het werkt.. dan wordt het wel wat groter maar dat maakt mij toch niet echt uit… :wink:
  • Daarmee kun je smileys aan en uit zetten. Zet dit er bijvoorbeeld is boven:[code:1:3b4f020cfd]$showSmileys = true;[/code:1:3b4f020cfd]
  • okee nou stikt ie daar niet meer op…
    als ik nu een return geef (zodat de tekst kan worden weergegeven..)
    met dit :
    [code:1:9425cbe331]
    $bericht2 = preg_replace(…);
    return $bericht2;

    dan blijft die :P staan
    [/code:1:9425cbe331]
  • [code:1:724d51c7be]if($showSmileys){[/code:1:724d51c7be]Oeps… Dat is nog een overblijfsel uit mijn uitgebreidere code, er zat namelijk nog een hele lap omheen. In principe kan je dat gewoon verwijderen, denk er dan wel aan dat je de afsluitende accolade "}" ook verwijdert.

    Als je de code in een functie plaatst zal het iets als het volgende worden:[code:1:724d51c7be]function replaceSmilies($bericht){

    /*
    * Smileys definiëren
    */

    $smilies = array(":)", ";)", ":D");
    $smiliesPics = array("smile","wink","biggrin");

    for($i=0;$i<count($smilies);$i++){
    $smilies[$i] = str_replace(")","\)",$smilies[$i]);
    $smilies[$i] = str_replace("(","\(",$smilies[$i]);
    $smilies[$i] = str_replace(" ","\s",$smilies[$i]);
    }

    /*
    * Zoekpatroon en vervanging smileys
    */

    $patterns = array();
    $replacements = array();

    for($i=0;$i<count($smilies);$i++){
    array_push($patterns, "/\s(".$smilies[$i].")/");
    array_push($replacements, " <img src=\"/images/smilies/".$smiliesPics[$i].".gif\" alt=\"$1\" title=\"$1\" />");
    }

    $eindbericht = preg_replace($patterns, $replacements, nl2br(htmlentities(" ".$bericht));

    return $eindbericht;

    }[/code:1:724d51c7be]Dit roep je aan in PHP dmv[code:1:724d51c7be]$input = $_GET["berichtofhoehetookheet"];
    echo replaceSmilies($input);[/code:1:724d51c7be]Niet getest, maar zou moeten werken.

    - Bas
  • thx Bas,

    Het werkt..
    nou zou ik alsnog graag willen weten wat er nou fout was aan mijn stukje code (vooral de reg exp..) daar kan ik later dan nog wel wat mee…

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.