Diskuze: preg_match

PHP PHP preg_match American English version English version

Aktivity (1)
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
Čím více času dostaneš, tím méně ho máš.
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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
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
Čím více času dostaneš, tím méně ho máš.
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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
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.