abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 17:50 | Komunita

Nadace The Document Foundation (TDF) zastřešující vývoj svobodného kancelářského balíku LibreOffice slaví 5 let od svého oficiálního vzniku. Nadace byla představena 28. září 2010. Formálně byla založena ale až 17. února 2012.

Ladislav Hagara | Komentářů: 0
dnes 12:50 | Komunita

Mozilla.cz informuje, že dosud experimentální funkce Page Shot z programu Firefox Test Pilot (zprávička) se stane součástí Firefoxu. Page Shot je nástroj pro vytváření snímků webových stránek. Umí výběr oblasti, prvku stránky (např. odstavce), nebo uložení snímku celé stránky. Snímky lze ukládat na disk nebo nahrávat na server Mozilly. Nedávno bylo oznámeno, že se součástí Firefoxu stane Activity Stream.

Ladislav Hagara | Komentářů: 5
dnes 04:10 | Nová verze

Po 10 týdnech vývoje od vydání Linuxu 4.9 (zprávička) oznámil Linus Torvalds, mj. již 20 let žijící v USA, vydání Linuxu 4.10 (LKML). Přehled nových vlastností a vylepšení například na Kernel Newbies a v Jaderných novinách (1, 2 a 3). Kódové jméno Linuxu 4.10 je Fearless Coyote.

Ladislav Hagara | Komentářů: 3
včera 15:55 | Zajímavý projekt

Vyzkoušet si příkazy a vyřešit několik úkolů lze na stránkách Commandline Challenge (CMD Challenge). Úkoly lze řešit různými způsoby, důležitý je výsledek. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

Ladislav Hagara | Komentářů: 18
18.2. 17:35 | Bezpečnostní upozornění

Německá Bundesnetzagentur (obdoba českého ČTU) zakázala na německém území prodej panenky Cayla kvůli „špionáži“ dětí. Tato elektronická hračka obsahuje mikrofon, reproduktor a kameru a bezdrátové komunikační rozhraní, pomocí kterého se hračka připojuje na servery výrobce. Takovýmto způsobem může hračka pomocí umělé inteligence „odpovídat“ na dotazy dítěte. Hlavní problém bude ale asi někde jinde, podle prvotních zpráv může

… více »
Petr Tomášek | Komentářů: 31
17.2. 15:30 | Bezpečnostní upozornění

CSIRT.CZ upozorňuje, že bezpečnostní experti objevili nový typ malwaru, jenž cílí na open source e-commerce platformu Magento. Malware je zajímavý tím, že se jedná o první svého druhu, jehož kód zůstává skrytý v SQL databázi zasaženého e-shopu. Škodlivý kód je volán pomocí tzv. SQL trigerru, který je spouštěn při každém vytvoření objednávky v systému.

Ladislav Hagara | Komentářů: 3
17.2. 09:00 | Nová verze

Bylo vydáno Ubuntu 16.04.2 LTS, tj. druhé opravné vydání Ubuntu 16.04 LTS s kódovým názvem Xenial Xerus. Přehled novinek v poznámkách k vydání a v přehledu změn.

Ladislav Hagara | Komentářů: 57
17.2. 06:00 | Zajímavý článek

Pavel Tišnovský se v dvoudílném článku na MojeFedora.cz věnuje tvorbě pluginů (modulů) pro bitmapový grafický editor GIMP. Pomocí pluginů lze GIMP rozšiřovat o další funkce. Implementovat lze například nové filtry nebo pomocné utility pro tvorbu animací či poloautomatickou retuš snímků.

Ladislav Hagara | Komentářů: 6
16.2. 23:32 | Komunita

Do 30. března se lze přihlásit do dalšího kola programu Outreachy, jehož cílem je přitáhnout do světa svobodného a otevřeného softwaru lidi ze skupin, jež jsou ve světě svobodného a otevřeného softwaru málo zastoupeny. Za 3 měsíce práce, od 30. května do 30. srpna 2017, v participujících organizacích lze vydělat 5 500 USD. Jedná se již o 14. kolo tohoto programu.

Ladislav Hagara | Komentářů: 11
16.2. 23:13 | Nová verze

Byla vydána verze 0.92.1 svobodného multiplatformního vektorového grafického editoru Inkscape. Přehled novinek v poznámkách k vydání. Řešen je mimo jiné problém s verzí 0.92, jež rozbíjí dokumenty vytvořené v předchozích verzích Inkscape. Více v příspěvku na blogu Davida Revoye, autora open source webového komiksu Pepper&Carrot nebo portrétu GNU/Linuxu.

Ladislav Hagara | Komentářů: 0
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (13%)
 (2%)
 (71%)
 (3%)
 (10%)
Celkem 669 hlasů
 Komentářů: 53, poslední dnes 18:38
Rozcestník
Reklama

Dotaz: PHP: "očistenie" reťazca po base64_decode od špeciálnych znakov

3.6.2014 12:05 Peter
PHP: "očistenie" reťazca po base64_decode od špeciálnych znakov
Přečteno: 185×
Dobrý deň vám prajem.

Mám 3 funkcie pre base64:
function base64_encode_urlsafe($Data) { return str_replace(array('+','/','='),array('-','_','.'),base64_encode(iconv('UTF-8','UTF-8//IGNORE',$Data))); }           
function base64_decode_urlsafe($Data) { return iconv('UTF-8','UTF-8//IGNORE',base64_decode(str_replace(array('-','_','.'),array('+','/','='),$Data),true)); }      
function base64_decode_recurse($Data)                                                                                                                              
  {                                                                                                                                                                
    $C=0;                                                                                                                                                          
    while(base64_encode_urlsafe(base64_decode_urlsafe($Data))===$Data)                                                                                             
      {                                                                                                                                                            
        $C++;                                                                                                                                                      
        if(($C>1 && strlen($Data)<=4) || ($C>50)) {  break; }                                                                                                      
        else { $Data=base64_decode_urlsafe($Data); }                                                                                                               
      }                                                                                                                                                            
    return $Data;                                                                                                                                                  
  }
V podstate prve dve sú urlsafe modifikácie a tá tretia robí nasledovné: aplikácia na strane klienta zakódováva dáta do base64 pomocou javascriptu, ale asi v jednom prípade zo sto sa stane, že reťazec zakóduje dvakrát - to znamená, že z reťazca "test" dostanem "ZEdWemRBPT0=", čiže potrebujem sa točiť dookola kým si myslím, že daný reťazec je zakódovaný do base64.

Problém je ale v testovaní či daný reťazec ešte je base64. Ako jediný použitelný test som našiel tento:
base64_encode_urlsafe(base64_decode_urlsafe($Data))===$Data
Ale aj tento má svoje muchy. Napríklad po base64_decode("test") dostanem toto: "��-" a existujú určité reťazce, ktoré znova po zakódovaní dostanú pôvodný výsledok, čiže test platí a return vyhodí práve ten nezmysel. S týmto som si poradil relatívne ľakho pomocou iconv, ktorý ten otáznik (čo je vlastne U+FFFD) odstráni a test už v tomto prípade neplatí.

A teraz sa dostávam k jadru môjho problému: var_dump(base64_decode("Bio=")) vyhodí: string(2) "*" a toto je problém, že táto hviezdička nie je normálna hviezdička, lebo keď urobím toto: var_dump("*") tak dostanem nasledovné: string(1) "*". Ono v podstate keď som ten string kopíroval tuto do textového editoru, tak som dostal string(2) "*", ale po zobrazení náhľadu stránky som už videl string(2) "?*" - dôležitý je tam ten otáznik pred hviezdičkou. Ale v textovom editore som to stále videl bez toho otáznika a keď som chcel ten "neviditelný" znak vymazať, tak som musel dvakrát stlačiť backspace.

A moja otázka znie - ako odstránim všetky špeciálne znaky z reťazca a vlastne ktoré to sú tie špeciálne znaky, lebo také znaky ako písmená s/bez diakritiky, číslice, /*-+="'!{}&€$...... chcem samozrejme zachovať.

Dúfam, že ste ma pochopili a vopred vám veľmi pekne ďakujem.

Odpovědi

3.6.2014 13:29 Lucius
Rozbalit Rozbalit vše Re: PHP: "očistenie" reťazca po base64_decode od špeciálnych znakov
3.6.2014 14:05 Filip Jirsák
Rozbalit Rozbalit vše Re: PHP: "očistenie" reťazca po base64_decode od špeciálnych znakov
Na otázku, které jsou to ty speciální znaky, si musíte odpovědět vy sám. Váš dotaz totiž ve stručnosti říká: „mám funkci, která mi někdy vyrábí platný výstup a někdy smetí. Potřebuju od sebe ten platný výstup a smetí rozpoznat.“ My ale nevíme, co je tím platným výstupem, takže vám nemůžeme poradit, jak jej poznat.

Celý váš problém má ale řešení, které je nesrovnatelně jednodušší než to, co v dotazu složitě popisujete. Opravte tu JavaScriptovou část aplikace, ať do base64 kóduje jenom jednou. Nic jiného vám stejně nepomůže, ať vymyslíte jakýkoli narovnák na vohejbák, pořád to nebude fungovat stoprocentně.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.