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 20:22 | IT novinky

    Google v pátek spustil v Česku Vyhledávání Live. Tato novinka umožňuje lidem vést plynulou konverzaci s vyhledávačem v češtině. A to prostřednictvím hlasu, nebo prostřednictvím toho, na co ukážou svým fotoaparátem či kamerou v mobilu. Rozšíření této multimodální funkce je možné díky nasazení Gemini 3.1 Flash Live, nového hlasového a audio modelu, který je od základu vícejazyčný, takže umožňuje lidem po celém světě mluvit na vyhledávač přirozeně a v jazyce, který je jim nejbližší.

    Ladislav Hagara | Komentářů: 0
    dnes 12:55 | Zajímavý software

    Jsongrep je open-source nástroj, který efektivně prohledává JSON dokumenty (editovat je neumí). Kompiluje regulérní jazyk dotazu do podoby deterministického konečného automatu (DFA), díky čemuž prochází strom JSON dokumentu pouze jednou a je v tom tedy rychlejší než jiné nástroje jako jsou například jq, JMESPath nebo jql. Jsongrep je napsaný v programovacím jazyce Rust, zdrojový kód je dostupný na GitHubu.

    NUKE GAZA! 🎆 | Komentářů: 2
    včera 05:55 | Komunita

    O víkendu probíhá v Praze na Karlově náměstí 13 konference Installfest 2026. Na programu je celá řada zajímavých přednášek a workshopů. Vstup na konferenci je zcela zdarma, bez nutnosti registrace. Přednášky lze sledovat i online na YouTube.

    Ladislav Hagara | Komentářů: 10
    včera 05:22 | Komunita

    Mozilla a společnost Mila oznámily strategické partnerství za účelem rozvoje open source a suverénní AI. Cílem je ukázat, že open source AI může konkurovat uzavřeným systémům. Obě organizace chtějí posílit technologickou suverenitu a snížit závislost na hrstce velkých technologických firem.

    Ladislav Hagara | Komentářů: 4
    včera 04:00 | Humor

    Adam Rice předvedl, že pomocí DNS lze distribuovat a spustit kompletní hru DOOM. Rozdělil WAD soubory a binárky do téměř 2000 DNS záznamů v Cloudflare zóně (jeden TXT záznam v DNS může nést okolo 2000 znaků textu). Ty pak stáhl PowerShellem, dekomprimoval a spustil přímo v paměti počítače bez nutnosti zápisu na disk, což prakticky dokazuje, že DNS může sloužit jako distribuované úložiště dat a možný kanál pro načítání kódu. Repozitář projektu je na GitHubu.

    NUKE GAZA! 🎆 | Komentářů: 6
    27.3. 13:00 | Komunita

    Dnes a zítra probíhají Arduino Days 2026. Na programu je řada zajímavých přednášek. Sledovat je lze od 17:00 na YouTube. Zúčastnit se lze i lokálních akcí. Dnes v Poličce v městské knihovně a zítra v Praze na Matfyzu.

    Ladislav Hagara | Komentářů: 10
    27.3. 12:11 | Nová verze

    Byla vydána beta verze Ubuntu 26.04 LTS s kódovým názvem Resolute Raccoon. Přehled novinek v poznámkách k vydání. Dle plánu by Ubuntu 26.04 LTS mělo vyjít 23. dubna 2026.

    Ladislav Hagara | Komentářů: 2
    27.3. 02:22 | Komunita Ladislav Hagara | Komentářů: 11
    26.3. 23:22 | Komunita

    Ubuntu plánuje v budoucích verzích nahradit tradiční nástroje pro synchronizaci času (chrony, linuxptp a gpsd) novým, v Rustu napsaným ntpd-rs, který nabídne vyšší bezpečnost a stabilitu.

    Ladislav Hagara | Komentářů: 3
    26.3. 22:33 | Nová verze

    Byla vydána nová verze 7.6 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Správce hesel KeePassXC byl nahrazen správcem hesel GNOME Secrets. Bitcoinová peněženka Electrum byla povýšena na verzi 4.7.0. Tor Browser byl povýšen na verzi 15.0.8. Další novinky v příslušném seznamu.

    Ladislav Hagara | Komentářů: 1
    Které desktopové prostředí na Linuxu používáte?
     (15%)
     (7%)
     (1%)
     (12%)
     (29%)
     (2%)
     (5%)
     (1%)
     (14%)
     (24%)
    Celkem 1180 hlasů
     Komentářů: 27, poslední 17.3. 19:26
    Rozcestník

    Dotaz: PHP: Regulární výraz a diakritika v UTF-8

    9.6.2009 15:44 N0rT0n | skóre: 9 | blog: Lama | Brno
    PHP: Regulární výraz a diakritika v UTF-8
    Přečteno: 5049×

    Zdravím,

    řešil už někdo prapodivné chování PHP funkce mb_ereg() ?

    regulární výraz

    mb_ereg("^[a-zA-Z]*$","příšera")

    se vyhodnotí negativně, zatímco regulární výraz

    mb_ereg("^[a-zA-Z]*","příšera")

    se vyhodnotí pozitivně (odstraněn znak pro konec řetězce).

    Výraz:

    mb_ereg("^[a-zA-Z]*$","prisera")

    se vyhodnoti pozitivně.

     

    Narazil jsem na tento problém při sestavování podstatně složitějšího výrazu, který u slov bez diakritiky fungoval naprosto bez problému. Problém je v tom, že ve výrazu nutně potřebuji omezit chování konec řetězce. Všechny patterny obsahující znak $ (pro konec řetězce) se vyhodnocují automaticky negativně.

    Vstupem i výstupem je kódování UTF-8. mb_internal_encoding() hlasi UTF-8, mb_regex_encoding() taktéž. Tím, že řetězce na vstupu jsou v UTF-8, jsem si naprosto jist. Verze PHP je 5.2.6.

     

    Má někdo nějaký nápad, či případně toto nějak řešil?

    Odpovědi

    9.6.2009 16:01 Blondak
    Rozbalit Rozbalit vše Re: PHP: Regulární výraz a diakritika v UTF-8

    mb_ereg("^[a-zA-Z]*","příšera")
    se vyhodnocuje správně pozitivně, protože souhlasí "p" na začátku, pokud budeš dělat
    mb_ereg("^[a-zA-Z]*","činka")
    tak to už vyhodnotí negativně, možná bych zkusil
    preg_match("/^[\S]*$/u","příšera")
    , ale nevím co přesně máš na vstupech.

    9.6.2009 17:41 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: PHP: Regulární výraz a diakritika v UTF-8
    se nevyhodnocuje správně pozitivně proto, že souhlasí "p" na začátku, ale proto, že výrazu ^[a-zA-Z]* vyhovuje jakýkoliv řetězec, který má začátek (to má každý) a pak náseduje 0 až N výskytů a-zA-Z. Takže by vyhovovala i šíšera.
    10.6.2009 04:01 zha
    Rozbalit Rozbalit vše Re: PHP: Regulární výraz a diakritika v UTF-8
    Takže by vyhovovala i šíšera.

    Měla by, ale proč neprojde ta činka?
    10.6.2009 07:39 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: PHP: Regulární výraz a diakritika v UTF-8
    činka projde
    10.6.2009 10:56 Blondak
    Rozbalit Rozbalit vše Re: PHP: Regulární výraz a diakritika v UTF-8

    jj, pravda nějak jsem si spletl * a +

    Tarmaq avatar 9.6.2009 16:31 Tarmaq | skóre: 39
    Rozbalit Rozbalit vše Re: PHP: Regulární výraz a diakritika v UTF-8
    je to jak kolega pise v tom, ze v prvnim pripade se ten regular vyhodnoti jen na p
    nevim jestli je to uplne koser reseni, ale slo by to asi udelat nejak takto:
    setlocale(LC_CTYPE, 'cs_CZ.utf8');
    $foo = iconv('utf-8', 'ascii//TRANSLIT', "příšera");
    
    # mb_ereg se vyhodnoti pozitivne
    mb_ereg("^[a-zA-Z]*$", $foo);
    
    # jinak lze pouzit i tento tvar
    mb_ereg("^[[:alpha:]]*$", $foo);
    
    Don't panic!
    9.6.2009 17:24 Sinuhet | skóre: 31
    Rozbalit Rozbalit vše Re: PHP: Regulární výraz a diakritika v UTF-8
    preg_match("/^\p{L}*$/", "příšera");
    9.6.2009 17:40 N0rT0n | skóre: 9 | blog: Lama | Brno
    Rozbalit Rozbalit vše Re: PHP: Regulární výraz a diakritika v UTF-8

    Díky za reakce,

    ten nápad s iconv mě taky napadl. Leč jsem si stále myslel, že mě napadne něco elegantního. V tom skriptu se jedná o ošetření vkládání klíčových slov. Pravidla jsou taková, že mohou začínat libovolným písmenem, mohou obsahovat číslici, od sebe jsou odděleny čárkou (či případně čárkou a mezerou) a musí končit slovem. Žádné jiné znaky nejsou povoleny, takže nelze použít třídu [[:alpha:]]. Vše až na to ošetření konce slova jsem už zvládl.

    Správně by se měl vyhodnotit tento řetězec (i s vloženou frází "sportovní náčiní"):

    činka, sportovní náčiní, číslo21, google
    

    chybně by se měl vyhodnotit řetězec obsahující například:

    činka, sportovní náčiní, 21. století, google,

    (slovo nesmí začínat číslicí, tečka není přípustná a řetězec nesmí končit žádným jiným znakem, než [a-zA-Z0-9]). Něco jako

    ^[a-zA-Z0-9]*(,| )*[a-zA-Z0-9]*$
    
    9.6.2009 19:16 N0rT0n | skóre: 9 | blog: Lama | Brno
    Rozbalit Rozbalit vše Re: PHP: Regulární výraz a diakritika v UTF-8

    Moc elegantní to není, ale snad by to mohlo pomoci někomu, kdo podobný problém řeší:

    $foo = iconv('utf-8', 'ASCII//IGNORE', $text);
    if(ereg('^([a-zA-Z]{1,}[0-9]*(,| ){0,1})*[a-zA-Z]{1,}[0-9]*$',$foo)) {

      $result=1;

    } else { $result=0; }

    /*

    1) do proměnné $foo se překóduje text z proměnné $text, která je kódována v UTF-8, proměnná $foo je nyní reprezentována v kódování ASCII s tím, že znaky, které nemohly být zkonvertovány do ASCII "tiše" zmizí (zajišťuje příznak //IGNORE)

    2) klíčová slova musí začínat písmenem a případně končit číslicí, mezi slovy je přípustná čárka (oddělovač klíčových slov) nebo mezera (oddělovač slov v slovní frázi). Celý regulární výraz musí končit slovem (případně slovem s číslicí na konci).

    */

     Vypadá to, že to funguje, že jsem neudělal chybu (po 11 hodinách v práci by mě to ani nepřekvapilo).

     

    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.