Hru Warhammer: Vermintide 2 (ProtonDB) lze na Steamu získat zdarma napořád, když aktivaci provedete do pondělí 24. listopadu.
Virtualizační software Xen (Wikipedie) byl vydán v nové verzi 4.21. Podrobnosti v poznámkách k vydání a přehledu nových vlastností.
Evropská komise schválila český plán na poskytnutí státní pomoci v objemu 450 milionů eur (téměř 11 miliard Kč) na rozšíření výroby amerického producenta polovodičů onsemi v Rožnově pod Radhoštěm. Komise o tom informovala v dnešní tiskové zprávě. Společnost onsemi by podle ní do nového závodu v Rožnově pod Radhoštěm měla investovat 1,64 miliardy eur (téměř 40 miliard Kč).
Microsoft v příspěvku na svém blogu věnovaném open source oznámil, že textové adventury Zork I, Zork II a Zork III (Wikipedie) jsou oficiálně open source pod licencí MIT.
První prosincový týden proběhne SUSE Hack Week 25. Zaměstnanci SUSE mohou věnovat svůj pracovní čas libovolným open source projektům, například přidání AI agenta do Bugzilly, implementaci SSH v programovacím jazyce Zig nebo portaci klasických her na Linux. Připojit se může kdokoli.
Google oznámil, že Quick Share na Androidu funguje s AirDropem na iOS. Zatím na telefonech Pixel 10. Uživatelé tak mohou snadno přenášet soubory z telefonů s Androidem na iPhony a obráceně.
Byla vydána nová verze 8.5 (8.5.0) skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Přináší řadu novinek a vylepšení (URI Extension, Pipe Operator, Clone With, …). Vydána byla také příručka pro přechod z předchozích verzí.
Evropská komise zahájila tři vyšetřování týkající se cloudových platforem Amazon Web Services (AWS) a Microsoft Azure. Evropská exekutiva, která plní také funkci unijního antimonopolního orgánu, chce mimo jiné určit, zda jsou americké společnosti Microsoft a Amazon v cloudových službách takzvanými gatekeepery, tedy hráči, kteří významně ovlivňují provoz internetu a musí dle nařízení o digitálních trzích (DMA) na společném trhu
… více »Společnost Meta Platforms vyhrála ostře sledovaný spor o akvizici sítě pro sdílení fotografií Instagram a komunikační aplikace WhatsApp. Podle amerického soudu firma jejich převzetím neporušila antimonopolní zákon, protože si tak nemonopolizovala trh sociálních sítí. Žalobu na Metu podala před pěti lety americká Federální obchodní komise (FTC). FTC argumentovala, že Meta, tehdy známá jako Facebook, koupila tyto dvě společnosti v letech 2012 a 2014 proto, aby s nimi nemusela soutěžit.
Home Assistant včera představil svůj nejnovější oficiální hardware: Home Assistant Connect ZBT-2 pro připojení zařízení na sítích Zigbee nebo Thread.
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?
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.
šíšera.
jj, pravda nějak jsem si spletl * a +
p
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);
preg_match("/^\p{L}*$/", "příšera");
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]*$
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).
Tiskni
Sdílej: