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 16:55 | Nová verze

    Kancelářský balík LibreOffice byl vydán ve verzi 26.8. Mimo jiné vylepšuje typografii a kompatibilitu s formáty MS Office, více v poznámkách k vydání.

    |🇵🇸 | Komentářů: 0
    dnes 14:55 | Nová verze

    Armbian, tj. linuxová distribuce založená na Debianu a Ubuntu optimalizovaná pro jednodeskové počítače na platformě ARM a RISC-V, ke stažení ale také pro Intel a AMD, byl vydán ve verzi 26.8. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 3
    dnes 11:44 | Nová verze

    Byla vydána nová verze 23.1.0, tj. první stabilní verze z nové řady 23.1.x, překladačové infrastruktury LLVM (Wikipedie). Přehled novinek v poznámkách k vydání: LLVM, Clang, LLD, Extra Clang Tools, Libc++, Polly a Flang.

    Ladislav Hagara | Komentářů: 0
    dnes 02:11 | Nová verze

    Google Chrome 152 byl prohlášen za stabilní. Nejnovější stabilní verze 152.0.7977.64 přináší řadu novinek. Podrobný přehled v poznámkách k vydání. Opraveno bylo 327 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    dnes 01:11 | Komunita

    Před 35 lety, 25. srpna 1991, oznámil Linus Benedict Torvalds v diskusní skupině comp.os.minix, že vyvíjí (svobodný) operační systém (jako koníček, nebude tak velký a profesionální jako GNU) pro klony 386 (486), že začal v dubnu a během několika měsíců by mohl mít něco použitelného.

    Ladislav Hagara | Komentářů: 0
    včera 16:33 | IT novinky

    Apple představil čipy M6 a M5 Ultra, Mac mini s M6 nebo M5 Pro a Mac Studio s M5 Max nebo M5 Ultra. Fedora Asahi Remix zatím podporuje jenom M1 a M2.

    Ladislav Hagara | Komentářů: 12
    včera 14:11 | Komunita

    Firefox 157 přinese zapnutou podporu rastrového grafického formátu JPEG XL. Založena je na v Rustu napsané implementaci jxl-rs používané i v Chrome a Chromiu.

    Ladislav Hagara | Komentářů: 0
    včera 02:11 | Nová verze

    Vanilla OS 3 „Reunion“ byl vydán. Tato na Debianu „Sid“ založená desktopová distribuce s transakčními aktualizacemi „neměnného“ základního systému (ABRoot) nově podporuje architekturu arm64 (vedle x86-64), podporuje reprodukovatelné sestavení většiny balíčků a vylepšuje systémové nástroje. Vlastní meta-správce balíčků APX nyní používá Distrobox v2 a je dostupný i pro jiné distribuce.

    |🇵🇸 | Komentářů: 0
    24.8. 16:00 | IT novinky

    Řemínky pro Apple Watch, bezdrátová sluchátka nebo nabíjecí adaptéry. Takovou nabídku našli v uplynulých dnech příslušníci Celního úřadu v Liberci při kontrole kamenného obchodu na Náchodsku. Celkem zde zadrželi 3 035 kusů zboží podezřelého z porušování práv duševního vlastnictví. Pokud by se jednalo o originální výrobky, jejich hodnota by podle odhadu přesáhla 10,8 milionu korun.

    Ladislav Hagara | Komentářů: 11
    24.8. 14:11 | Nová verze

    Byla vydána verze 31.1 textového editoru GNU Emacs. Podrobný přehled novinek v souboru NEWS.

    Ladislav Hagara | Komentářů: 5
    Které desktopové prostředí na Linuxu používáte?
     (10%)
     (7%)
     (2%)
     (19%)
     (29%)
     (7%)
     (6%)
     (2%)
     (15%)
     (22%)
    Celkem 2499 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    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: 473×
    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.