Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET
Využij akce až 80% zdarma při nákupu e-learningu. Více informací .
C# week
Avatar
Eldest
Redaktor
Avatar
Eldest:30.10.2012 22:17

Ahoj, mám toto pole smajlíků

public $smiles = array(1 => "o:)",":'(","8-|","3:)",":D",":P",":*",":3",";)",":(","8)",":/",">:-(","-_-",":v",":putnam:",":|]",":)","<3","^_^","<(\")","O.o",">:o",":o","(^^^)");

při výpisu z DB se pomocí preg_replace zkontroluje, jestli tam není nějaký smajlík. Pokud ano, nahradí se <img....

public function smiles ($obsah) {
                foreach($this->smiles as $key=>$item) {
                $obsah = preg_replace('.$item.','<img src="../images/smiles/smiles('.$key.').png" alt="'.$item.'">',$obsah);
                }
                return $obsah;
        }

Mám chyby asi v apostrofech apod., ale nevím si rady, jak je opravit

Editováno 30.10.2012 22:20
 
Odpovědět
30.10.2012 22:17
Avatar
Eldest
Redaktor
Avatar
Eldest:30.10.2012 22:19

Ovšem se omlouvám - preg_replace

 
Nahoru Odpovědět
30.10.2012 22:19
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na Eldest
David Jančík:30.10.2012 22:50

Proč tak složitě?
Stačí ti pole, kde bude klíčem textová podoba smajlíku a hodnotou jméno souboru.
Pak použiješ str_replace, tam by mělo jít dát array_keys a array_values.

$emoticons = array(
   ':-)' => 'happy.png',
   ':-(' => 'sad.png',
);

str_replace(array_keys($emoticons), '<img src="../images/smiles/"' . array_values($emoticons) . '" />', $text);
Editováno 30.10.2012 22:52
Nahoru Odpovědět
30.10.2012 22:50
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Eldest
Redaktor
Avatar
Eldest:31.10.2012 10:21

Ok, díky vyzkouším to.

 
Nahoru Odpovědět
31.10.2012 10:21
Avatar
David Čápka
Tým ITnetwork
Avatar
Nahoru Odpovědět
31.10.2012 16:30
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Eldest
Redaktor
Avatar
Eldest:31.10.2012 16:31

Nefunguje to. Nikdy to nenajde shodu, i když je jich tam spousta.

 
Nahoru Odpovědět
31.10.2012 16:31
Avatar
Eldest
Redaktor
Avatar
Eldest:31.10.2012 16:44

Už jsem asi našel chybu ve všech mých asi 50 variantách. Mohlo by to být tím, že jsem měl pole.

public $smiles = array(1 => ':)', ':D');

A teď, když jsem napsal toto, tak to funguje.

public $smiles = array(':)' => 1, ':D');
 
Nahoru Odpovědět
31.10.2012 16:44
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na David Čápka
David Jančík:31.10.2012 17:01

Nad strtr jsem také přemýšlel. Ovšem to by tam musel jako hodnotu strkat celý tag img. Nebo tě napadá jak jinak to použít?

Edit: Jo teď koukám, že v tom manuálu to tak máš. A když nad tím přemýšlím, tak to vlastně ničemu nevadí. Jen se tam zbytečně duplikuje ten tag a ta hodnota je dlouhá.

Editováno 31.10.2012 17:04
Nahoru Odpovědět
31.10.2012 17:01
Zapomeň, že je to nemožné a udělej to ;)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na David Jančík
David Čápka:31.10.2012 17:49

To je fakt, máš to lepší :)

Nahoru Odpovědět
31.10.2012 17:49
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.