Avatar
Michal Kuba
Redaktor
Avatar
Michal Kuba:

Ahoj.
Z databáze tahám různé údaje, které se přes rozhraní ukládají do db i s html tagy a ty při výpisu chci "skrýt". Podle všeho by mělo stačit proměnnou obsahující pole s daty stripnout pomocí PHP funkce.
Když mám v kontroleru toto:

$mise=$spravceUzivatelu->vyberMise();
       strip_tags($mise);
       if($mise){
       $this->data['mise'] = $mise;
       }

A dám si print_r($mise), vypíše se to dobře, v polích jsou již data bez tagů.

Jenže to předávám pohledu, kde je foreach, a tam se mi to bohužel s tagy vypisuje. Vypadá to fakt nevkusně a prostě blbě.

Pro jistotu pohled, ve kterém je nejspíš chyba, jelikož kontroler je celý ok:

<?php foreach ($mise as $mise): ?>
                            <tr class="table-row">

                        <td class="table-tit"><h4><?= $mise['titulek'] ?></h4></td>
                        <td class="table-text"><p><?= $mise['text']?></p></td>
                        <td class="table-exp"><p><?= $mise['exp'] ?></p><p><a href="domu/prijmout/<?= $mise['ID'] ?>">PŘIJMOUT!</a></p></td>
                        <td class="table-date"><p><?= date( "d.m.Y H:i",strtotime($mise['pridano'])) ?></p></td>
                        </tr>

                    <?php endforeach; ?>

Věděl by si s tím někdo rady?

Děkuju

 
Odpovědět 26.9.2015 22:30
Avatar
BlugW
Redaktor
Avatar
Odpovídá na Michal Kuba
BlugW:

A nejde to vypsat v pohledu?

strip_tags($mise['text'])

Myslím že to taky patří do pohledu.

Nahoru Odpovědět  +1 26.9.2015 22:36
Pořiď si mac na www.appletrh.cz. Novinky a zajímavosti ze světa Apple na https://www.applemagazin.eu
Avatar
Lukáš Červený:

Mám dojem, že funkce strip_tags bere parametr jako hodnotu a vrací nový ořezaný string, tzn. potřebuješ ho uložit do proměnné:

$mise = strip_tags($mise);
 
Nahoru Odpovědět  +2 26.9.2015 22:43
Avatar
Martin Konečný (pavelco1998):

Jen ještě technická poznámka - strip_tags() jako argument bere string, tvá proměnná $mise zřejmě bude pole.
Pak se to dá aplikovat třeba takto

foreach ($mise as &$zaznam) {
  $zaznam = strip_tags($zaznam);
}

nebo by to mělo jít i takto

array_map("strip_tags", $mise)
 
Nahoru Odpovědět 27.9.2015 1:08
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Michal Kuba:

Vyzkoušel jsem všechno možný, ale pořád to dělá tagy do výpisu na stránce, ale při print_r z kontroleru ne.. Pro jistotu jsem přímo do modelu výsledek ořezal od tagů, ale zjevně marně :/

 
Nahoru Odpovědět 27.9.2015 9:34
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Michal Kuba
Michal Kuba:

Jooo, mám to! V pohledu jsem u výpisu textu přidal toto:

html_entity_decode($mise['text'])

a už to jede bez HTML znaků!

Díky všem za snahu, určitě jejich řešení někdy využiju někde jinde :)

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět 27.9.2015 9:40
Avatar
Honza Bittner
Redaktor
Avatar
Odpovídá na Michal Kuba
Honza Bittner:

Lepší by bylo v kontroleru toto, nebo něco obdobného, ne? :)

$mise = html_entity_decode(strip_tags($mise));

Do pohledů moc logiku nestrkej (což dekódování je), spíš tam dávej jen čistě proměnou s daty pro výpis. :)

Nahoru Odpovědět 27.9.2015 9:50
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Honza Bittner
Michal Kuba:

O to jsem se snažil, ale funguje to pouze, když do výpisu foreach dám u >mise['text'] před to tu html_entity_decode, jinak to nefunguje...

 
Nahoru Odpovědět 27.9.2015 9:57
Avatar
Honza Bittner
Redaktor
Avatar
Odpovídá na Michal Kuba
Honza Bittner:

Jo už vidím... $mise je pole polí.

No, tady bys to teoreticky mohl dělat tak, že to dáš do pohledu, ale pak je zase problém, že máš v pohledu menší logiku, což není nikdy moc dobré - zapomeneš, mícháš to atp.

V kontroleru, pokud potřebuješ takto upravit všechno pro každou misi bych použil něco jako kód níže. Pokud to chceš jen pro ten ['text'], pak ten foreach uvnitř samozřejmě nepotřebuješ a použiješ jen $jedna['text'].

foreach ($mise as $jedna) {
   foreach ($jedna as $key => $value) {
      $jedna[$key] = html_entity_decode(strip_tags($jedna[$key]))
   }
}

Co se týče výkonu, nevím, ale pravděpodobně to nebude mít nějaký zásadní vliv a vše si udržíš v kontroleru. A možná bys to mohl šoupnout rovnou do modelu (záleží na situaci), tedy $spravceUzivatelu->vyberMise();...

Nahoru Odpovědět 27.9.2015 10:17
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
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.