NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Eldest
Tvůrce
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
Tvůrce
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
Vlastník
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
Tvůrce
Avatar
Eldest:31.10.2012 10:21

Ok, díky vyzkouším to.

 
Nahoru Odpovědět
31.10.2012 10:21
Avatar
David Hartinger
Vlastník
Avatar
Nahoru Odpovědět
31.10.2012 16:30
New kid back on the block with a R.I.P
Avatar
Eldest
Tvůrce
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
Tvůrce
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
Vlastník
Avatar
Odpovídá na David Hartinger
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 Hartinger
Vlastník
Avatar
Odpovídá na David Jančík
David Hartinger:31.10.2012 17:49

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

Nahoru Odpovědět
31.10.2012 17:49
New kid back on the block with a R.I.P
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.