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 04:44 | Komunita

    Ubuntu 26.04 (Resolute Raccoon) už nebude v desktopové instalaci obsahovat GUI nástroj 'Software & Updates'. Důvodem jsou obavy z jeho složitosti pro běžné uživatele a z toho plynoucích bezpečnostních rizik. Nástroj lze doinstalovat ručně (sudo apt install software-properties-gtk).

    NUKE GAZA! 🎆 | Komentářů: 1
    dnes 04:33 | IT novinky

    Thomas Dohmke, bývalý CEO GitHubu, představil startup Entire - platformu pro spolupráci vývojářů a agentů umělé inteligence. Entire získalo rekordních 60 milionů dolarů na vývoj databáze a nástrojů, které mají zefektivnit spolupráci mezi lidmi a agenty umělé inteligence. Dohmke zdůrazňuje potřebu přepracovat tradiční vývojové postupy tak, aby odpovídaly realitě, kdy většinu kódu produkuje umělá inteligence.

    NUKE GAZA! 🎆 | Komentářů: 0
    dnes 04:22 | Zajímavý projekt

    Toyota Connected North America oznámila vývoj open-source herního enginu Fluorite, postaveného na frameworku Flutter. Pro renderování grafiky využívá 3D engine Filament od společnosti Google a dle svého tvrzení cílí na konzolovou kvalitu her. Fluorite je zřejmě navržen tak, aby fungoval i na méně výkonném hardware, což naznačuje možnost použití přímo v ICE systémech vozidel. Zdrojový kód zatím zveřejněný není.

    NUKE GAZA! 🎆 | Komentářů: 0
    dnes 04:11 | Bezpečnostní upozornění

    Byl vytvořen nástroj a postup pro překonání věkového ověření platforem Discord, Kick, Twitch, Snapchat (a možná dalších), kód je open-source a dostupný na GitHubu. Všechny tyto sítě používají stejnou službu k-ID, která určuje věk uživatele scanem obličeje a na původní server posílá pouze šifrovaná metadata, ty ale sociální síť už nedokáže sama nijak validovat, 'útok' spočívá ve vygenerování a podstrčení legitimně vypadajících ověřovacích metadat.

    NUKE GAZA! 🎆 | Komentářů: 1
    včera 14:11 | IT novinky

    Jihokorejská kryptoměnová burza Bithumb přiznala vážné selhání interních systémů, které ji vystavilo riziku sabotáže a nezabránilo chybné transakci v hodnotě přes 40 miliard dolarů (814 miliard Kč). Druhá největší kryptoměnová burza v Koreji minulý týden při propagační akci omylem rozeslala zákazníkům zhruba 620 000 bitcoinů místo 620 000 wonů (8700 Kč). Incident vyvolal pokles ceny bitcoinu o 17 procent. Většinu

    … více »
    Ladislav Hagara | Komentářů: 7
    včera 13:55 | Nová verze

    Google Chrome 145 byl prohlášen za stabilní. Nejnovější stabilní verze 145.0.7632.45 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Zpátky je podpora grafického formátu JPEG XL, viz Platform Status. Odstraněna byla před třemi lety. Nový dekodér JPEG XL jxl-rs je napsán v Rustu. Zobrazování JPEG XL lze vyzkoušet na testovací stránce. Povolit lze v nastavení chrome://flags (Enable JXL image format).

    Ladislav Hagara | Komentářů: 0
    10.2. 22:44 | Nová verze

    Byla vydána nová verze 1.26 programovacího jazyka Go (Wikipedie). Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    10.2. 18:11 | Nová verze

    CrossOver, komerční produkt založený na Wine, byl vydán ve verzi 26. Přehled novinek v ChangeLogu. CrossOver 26 vychází z Wine 11.0, D3DMetal 3.0, DXMT 0.72, Wine Mono 10.4.1 a vkd3d 1.18. Do 17. února lze koupit CrossOver+ se slevou 26 %.

    Ladislav Hagara | Komentářů: 13
    10.2. 14:22 | Komunita

    KiCad je nově k dispozici také jako balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo na spouštění a spustit [Mastodon, 𝕏].

    Ladislav Hagara | Komentářů: 0
    10.2. 13:22 | Zajímavý projekt

    Šenčenská firma Seeed Studio představila projekt levného robotického ramena reBot Arm B601, primárně coby pomůcky pro studenty a výzkumníky. Paže má 6 stupňů volnosti, dosah 650 mm a nosnost 1,5 kilogramu, podporované platformy mají být ROS1, ROS2, LeRobot, Pinocchio a Isaac Sim, krom toho bude k dispozici vlastní SDK napsané v Pythonu. Kompletní seznam součástek, videonávody a nejspíš i cena budou zveřejněny až koncem tohoto měsíce.

    … více »
    NUKE GAZA! 🎆 | Komentářů: 9
    Které desktopové prostředí na Linuxu používáte?
     (19%)
     (6%)
     (0%)
     (11%)
     (26%)
     (3%)
     (4%)
     (2%)
     (12%)
     (28%)
    Celkem 846 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Dotaz: PHP - kontrola mezer v řetězci

    27.6.2015 14:30 VelkyBubak
    PHP - kontrola mezer v řetězci
    Přečteno: 522×
    Jsem si vědom, že podobná otázka tu již padla (http://www.abclinuxu.cz/poradna/programovani/show/328193). Bohužel na ni nebylo odpovězeno a bylo nalezeno jiné řešení.

    udělal jsem si zatím hrubý nástin funkce jíž chci kontrolovat vkládané texty:
    function kontrola_textu($kde) {
    	
    	$kde = trim(strip_tags($kde));
    	
    	$ke_kontrole = strlen($kde);
    	$ke_kontrole2 = floor($ke_kontrole / 2);
    	$znaky = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ', '.', ',', '/', '*', '-', '_', '\\', '!', '?', '(', ')');
    	
    	foreach ($znaky as $znak) {
    	
    	$pocet = substr_count($kde, $znak);
    	
    	if ($pocet > $ke_kontrole2 or $ke_kontrole < 50) return $pocet;
    }
    
    return 0;
    
    }
    
    toto funguje dobře na všechny znaky v poli, kromě mezery. Což mě přivádí k původní otázce.

    Odpovědi

    27.6.2015 14:39 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: PHP - kontrola mezer v řetězci
    A jak zní otázka?
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    27.6.2015 15:15 VelkyBubak
    Rozbalit Rozbalit vše Re: PHP - kontrola mezer v řetězci
    och, já zapomněl: Jak zkontrolovat mezery v řetězci? PS: protože se zdá že, mezeru zapsanou takto:
    ' '
    funkce nespatřuje schodnou s mezerou v textu
    27.6.2015 16:52 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: PHP - kontrola mezer v řetězci
    Bílých znaků je víc druhů. Tuším, že tam může zlobit chybně použitý "OR".
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    27.6.2015 19:40 VelkyBubak
    Rozbalit Rozbalit vše Re: PHP - kontrola mezer v řetězci
    Netuším zda je or chybně použitý, ale i kdyby, nemá vliv na výsledek kontroly.

    Jakým způsobem tedy mohu otestovat: a) jaká mezera tedy vlastně použita v textu b) všechny možné mezery v textu

    27.6.2015 19:53 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: PHP - kontrola mezer v řetězci
    Na výsledek kontroly nemá zřejmě vliv nic, protože jsem zatím nenašel žádný string, pro který by bylo výsledkem nenulové číslo.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    28.6.2015 07:01 VelkyBubak
    Rozbalit Rozbalit vše Re: PHP - kontrola mezer v řetězci
    tak tohle je jen pro začátek (jde o hodnocení a uživatelé musí zadat minimálně 50 znaků), přičemž prvotní záměr tohohle scriptu je, aby nešlo vkládat pitomosti typu: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa , což je právě ten typ výrazu který dá nenulový výsledek
    28.6.2015 07:06 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: PHP - kontrola mezer v řetězci
    Vskutku. A stejně to reaguje i na mezery.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    28.6.2015 07:18 VelkyBubak
    Rozbalit Rozbalit vše Re: PHP - kontrola mezer v řetězci
    Jistě, netvrdím, že to nikomu nemůže fungovat, ale mě to s textem který mi někdo zadá do formuláře (z něhož se POSTem pošle scriptu), pokud jde o mezery prostě nefunguje a tak se snažím přijít na to, jak kontrolovat mezery (a pokud jich je více druhů, jak kontrolovat i ty ostatní)
    28.6.2015 07:27 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: PHP - kontrola mezer v řetězci
    Zkus odstranit funkci trim() a pochopíš.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    28.6.2015 20:44 VelkyBubak
    Rozbalit Rozbalit vše Re: PHP - kontrola mezer v řetězci
    Díky. Hezké, takže bude fungovat, pokud do testu přidám rovnost (aby podmínka fungovala s nulou) a v těle if ošetřím možnost $pocet == 0 tak aby nevracela nulu...
    28.6.2015 21:21 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: PHP - kontrola mezer v řetězci
    Domnívám se, že někdy je lepší podmínky ubrat, než přidat.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    29.6.2015 08:55 VelkyBubak
    Rozbalit Rozbalit vše Re: PHP - kontrola mezer v řetězci
    takže dáváš přednost tomuto:
    if ($pocet >= $ke_kontrole2) { if ($pocet == 0) {$pocet = 1;} return $pocet;}
    nebo tomuto:
    if ($pocet > $ke_kontrole2) return $pocet;
    if ($pocet == 0) return 1;
    
    Nicméně pořád mám problémy s mezerami:
    function kontrola_textu2($kde) {
    	
    	$kde = trim(strip_tags($kde));
    	
    	$ke_kontrole = strlen($kde);
    	$ke_kontrole2 = floor($ke_kontrole / 2);
    	$znaky = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ', '.', ',', '/', '*', '-', '_', '\\', '!', '?', '(', ')');
    	
    	foreach ($znaky as $znak) {
    	
    	$pocet = substr_count($kde, $znak);
    	
    	if ($pocet >= $ke_kontrole2) { if ($pocet == 0) {$pocet = 1;} return $pocet;}
    }
    
    return 0;
    
    }
    
    $a = "98 g8f98hf hgfh9999999999999999999999999999999999999999999 899999999999999999999999";
    $b = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
    $c = "                                                                                   ";
    
    echo kontrola_textu2($a)."
    "; echo kontrola_textu2($b)."
    "; echo kontrola_textu2($c)."
    "; echo "
    "; echo strlen($a)."
    "; echo strlen($b)."
    "; echo strlen($c)."
    ";
    Výsledky: 68 83 1 83 83 83 a přitom, zadám-li do vstupního pole, na nějž tyto funkce také aplikuji deset mezer jde prý o 18 znaků
    29.6.2015 10:02 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: PHP - kontrola mezer v řetězci
    Však ty výsledky jsou správně. Poté, co jsi na string $c aplikoval funkci trim(), je prázdný.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    27.6.2015 20:06 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: PHP - kontrola mezer v řetězci
    Proč vlastně přepisuješ formální parametr $kde? Má to nějaký význam? Osobně je považuji za nedotknutelné. Co ta zkratka znamená?
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    28.6.2015 07:11 VelkyBubak
    Rozbalit Rozbalit vše Re: PHP - kontrola mezer v řetězci
    Proč? Nevím proč používat další proměnnou, když mohu tuhle přepsat, zvlášť když původní hodnotu již dále nepotřebuji. Osobně je považuji za zcela normální a i tedy přepisovatelné proměnné.

    PS: není to zkratka, prostě jsem si řekl 'kde kontrolovat' a proměnná získala název. Je pro mě důležité abych se v tom vyznal, a řeším to českými názvy (bez diakritiky pochopitelně)
    28.6.2015 07:32 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: PHP - kontrola mezer v řetězci
    Hlavním důvodem však je neztratit kontinuitu, co se ve které proměnné nachází.

    Další proměnou používám i proto, abych ušetřil čas a paměť.

    Bylo by rozumnější pro názvy proměnných používat podstatná jména. Je to důležité pro to, aby ses v tom vyznal.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    29.6.2015 09:04 VelkyBubak
    Rozbalit Rozbalit vše Re: PHP - kontrola mezer v řetězci
    Promiň, ale když použiješ další proměnnou, tak asi moc paměti neušetříš, vlastně bych myslel, že to bude právě naopak. A co se času týká, netuším na co narážíš - jakože přepsat proměnnou je časově náročnější než založit novou?

    Jen tak pro zajímavost, jak ji v daném případě to pojmenoval ty?
    29.6.2015 10:18 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: PHP - kontrola mezer v řetězci
    Zkus si udělat pár testů na obsazení paměti v PHP a uvidíš. Ke "přepsání" proměnné nedochází, pokaždé se vytváří nová a ta původní se nechá sežrat v GC. Je tedy praktičtější uvolňovat lokální proměnné naráz při opuštění scope, v našem případě funkce.

    "Přepsáním" formálního parametru se v paměti vytváří jeho klon, aby se originál nepoškodil. Originál tím ve funkci přestane být dostupný, ale v paměti zůstává, protože na něj stále je odkaz skutečného parametru při volání funkce.

    Nejpraktičtější a nejrychlejší je v PHP pracovat s proměnnými tak, jako kdyby byly immutable. Zároveň tím odpadnou problémy se čtením takového programu - zpravidla je v něm méně WTF.

    A pojmenování proměnné? Asi jen "$text", ale vzhledem k tomu, že bych ten vnitřek udělal úplně jinak kvůli rychlosti, měly by ostatní proměnné jiný účel.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    9.7.2015 12:35 Lucius
    Rozbalit Rozbalit vše Re: PHP - kontrola mezer v řetězci
    Nevim jestli jsem dobre pochopil dotaz, pokud ano tak reseni je zhruba takove:
    /*
    $tmpInput - vstupni retezec
    $selectType - co ma fu count_chars vratit  - viz. dokumentace
    
    */
    
    $selectType = 1;
    foreach(count_chars ($tmpInput,$selectType) as $key=>$value){
    	echo '"'.chr($key) . '" - '.$value. "\n";
    }

    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.