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
Michal Kuba
Tvůrce
Avatar
Michal Kuba:26.9.2015 22:30

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
Odpovídá na Michal Kuba
Neaktivní uživatel:26.9.2015 22:36

A nejde to vypsat v pohledu?

strip_tags($mise['text'])

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

Nahoru Odpovědět
26.9.2015 22:36
Neaktivní uživatelský účet
Avatar
Lukáš Červený:26.9.2015 22:43

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
26.9.2015 22:43
Avatar
Martin Konečný (pavelco1998):27.9.2015 1:08

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
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Michal Kuba
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Michal Kuba:27.9.2015 9:34

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
Tvůrce
Avatar
Odpovídá na Michal Kuba
Michal Kuba:27.9.2015 9:40

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
Tvůrce
Avatar
Odpovídá na Michal Kuba
Honza Bittner:27.9.2015 9:50

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
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Michal Kuba
Tvůrce
Avatar
Odpovídá na Honza Bittner
Michal Kuba:27.9.2015 9:57

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
Tvůrce
Avatar
Odpovídá na Michal Kuba
Honza Bittner:27.9.2015 10:17

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
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
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.