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:00 | Komunita

S ukončením podpory Windows 7 spustila Nadace pro svobodný software (FSF) kampaň Upcycle Windows 7 s peticí žádající Microsoft, aby zveřejnil zdrojové kódy tohoto již nepodporovaného operačního systému pod svobodnou licencí. S uvedením Windows 7 v roce 2009 byla spuštěna kampaň Windows 7 Sins.

Ladislav Hagara | Komentářů: 17
dnes 03:00 | Komunita

Sedmý ročník největší české konference o redakčním systému WordPress WordCamp Praha 2020 se uskuteční v sobotu 29. února v pražském Cubex Centru na Pankráci. Na účastníky letos čekají tři tracky přednášek českých i zahraničních řečníků, několik workshopů, případových studií a samozřejmě i Happiness bar, kam se můžete přijít poradit s odborníky. Je to také ideální příležitost potkat stovky dalších WordPress nadšenců i profesionálů.

… více »
smíťa | Komentářů: 0
dnes 02:00 | IT novinky

Společnost Proton Technologies stojící za virtuální privátní sítí ProtonVPN otevřela všechny aplikace ProtonVPN pod licenci GPLv3. Současně oznámila, že tyto aplikace prošly bezpečnostním auditem. Také díky spolupráci s organizací Mozilla.

Fair | Komentářů: 0
včera 04:00 | Komunita

Na Youtube byl zveřejněn videozáznam jednání odvolacího soudu ve sporu Grsecurity (Open Source Security) vs. Bruce Perens [reddit].

Ladislav Hagara | Komentářů: 5
včera 03:00 | Komunita

Byl vyhlášen vítězný wallpaper soutěže o nejlepší wallpaper pro KDE Plasmu LTS 5.18. Vítězným a tedy výchozím wallpaperem je Volna. Autor wallpaperu Nikita Babin získává notebook od TUXEDO Computers.

Ladislav Hagara | Komentářů: 12
včera 02:00 | Nová verze

Nová verze ODF 1.3 (Open Document Format), výchozího formátu dokumentů LibreOffice, byla schválena standardizační komisí OASIS. Mezi novinky ve formátu patří digitální podpis a XML šifrování dokumentů založené na OpenPGP, plus několik vylepšení funkcí již dostupných v ODF 1.2, jako jsou nové typy regresních křivek pro grafy, nová specifikace počtu desetinných míst ve formátování čísel, speciální styl záhlaví/zápatí pro první

… více »
Zdeněk Crhonek | Komentářů: 0
24.1. 09:00 | Komunita

V Brně na FIT VUT probíhá DevConf.CZ 2020, již dvanáctý ročník jedné z největších akcí zaměřených na Linux a open source ve střední Evropě. Na programu je celá řada zajímavých přednášek a workshopů. Aktuální dění lze sledovat například na Twitteru.

Ladislav Hagara | Komentářů: 0
23.1. 23:44 | Komunita

Společnost Psyonix, v květnu 2019 koupena společností Epic Games, oznámila konec podpory počítačové hry Rocket League na Linuxu a macOS. Poslední aktualizace pro tyto operační systémy vyjde v březnu a odstraní možnost hrát tento automobilový fotbal online.

Ladislav Hagara | Komentářů: 13
23.1. 14:33 | Zajímavý článek

Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 89 (pdf), HackSpace 26 (pdf) a 27 (pdf) a Wireframe 28 (pdf), 29 (pdf) a 30 (pdf).

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

Byla vydána nová verze 12.7 open source alternativy GitHubu, tj. softwarového nástroje s webovým rozhraním umožňujícího spolupráci na zdrojových kódech, GitLab (Wikipedie). Představení nových vlastností v příspěvku na blogu.

Ladislav Hagara | Komentářů: 3
Zdají se vám sny s IT tématikou?
 (9%)
 (1%)
 (13%)
 (17%)
 (54%)
 (7%)
Celkem 271 hlasů
 Komentářů: 10, poslední 18.1. 16:18
Rozcestník

www.AutoDoc.Cz

Dotaz: Náhrada řetězde preg_replace_callback nefunguje

6.1. 15:08 Milan Uhrák | skóre: 29 | blog: milan_at_ABC
Náhrada řetězde preg_replace_callback nefunguje
Přečteno: 186×
Dobrý den. Mořím se tady s kouskem kódu, který se nechová podle očekávání, a nevím proč.

729 if( $debug ) trigger_error( '$replace: '.hppre($replace) );
$replace = preg_replace_callback('/=([0-9a-f]{2})/i',
	function($matches)use($debug){
732		if( $debug ) trigger_error( 'konverze : '.$matches[1].' na '.hexdec($matches[1]).' - '.chr(hexdec($matches[1])) );
		return chr(hexdec($matches[1]));},

	
	$replace);
736 if( $debug ) trigger_error( '$replace: '.hppre($replace) );
naplácal jsem tam triggery, abych odsledoval stavy proměnných ( xdebug nemám, neumím , no... ) a výstup je tento :
 time :+ 0,2523 s : USER : V souboru /data/srv/www/sqmail/functions/mime.php na řádce 729
$replace:

Marie Kratochv=EDlov=E1

.
time :+ 0,2523 s : USER : V souboru /data/srv/www/sqmail/functions/mime.php na řádce 732
konverze : ED na 237 - í.
time :+ 0,2523 s : USER : V souboru /data/srv/www/sqmail/functions/mime.php na řádce 732
konverze : E1 na 225 - á.
time :+ 0,2523 s : USER : V souboru /data/srv/www/sqmail/functions/mime.php na řádce 736
$replace:

.

Čili z $replace zůstane jen nový řádek ( podle všeho ).

Když modifikuji callback funkci, aby vracela jen hexdec($matches[1]), tak to funguje, samozřejmě v stringu jsou sprostá čísla, ale převod vrací výraz, kde je vidět, že se vstupem se něco - podle očekávání - dělo. Funkce chr to ale zabije a výsledkem je prázdný string. Mám tu php7.? na ubuntu bionic. Čumím na to už tři hodiny, a nevidím nic, co by mně navedlo k opravě tohoto kousku kódu.

hppre je moje funkce uzavírající print_r( cosik, 1 ) do <pre> tagu ...

Mimochodem jde o knihovnu z Squirrellmailu. ( no, nebudete věřit, ale naše starší kolegyně nechtějí jiný, ač jim nabízím přejít na mnohem funkčnější Roudcube ... ) to jen tak mimochodem.

Děkuji předem za nasměrování k řešení uvedeného problému.

Milan.

Řešení dotazu:


Odpovědi

6.1. 17:37 Kit | skóre: 44 | Brno
Rozbalit Rozbalit vše Re: Náhrada řetězde preg_replace_callback nefunguje
Vyzkoušej funkci quoted_printable_decode().

BTW: nemáš tam náhodou problém s indexy? V PHP jsou od nuly...
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
6.1. 17:49 Kit | skóre: 44 | Brno
Rozbalit Rozbalit vše Re: Náhrada řetězde preg_replace_callback nefunguje
Ještě jeden poznatek: Nikde neuvádíš kódování. String je zřejmě v ISO-Latin-2 nebo ve Windows-1250, ale PHP7 má defaultní sadu UTF-8.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
6.1. 18:34 Milan Uhrák | skóre: 29 | blog: milan_at_ABC
Rozbalit Rozbalit vše Re: Náhrada řetězde preg_replace_callback nefunguje
Jaký význam má kódováni ? preg_replace zajímá kódování ?

Ten kód převádí QP "escapované" znay do bytestringové podoby. Pokud by preg_replace fungoval v multibyte, pak by ho to mohlo rozhodit, to ano, a taky by to vysvětlovalo, proč při vyhození char() přece jen výstup nějaký byl ... ale zkoušet můžu až zítra.

V tom programu se nastavuje setlocale na češtinu cs_CZ.UTF8 ( tedy dle configu ) někde brzy ze začátku ..

Nevím, co mám zkusit ?
Řešení 1× (Milan Uhrák (tazatel))
6.1. 23:56 Kit | skóre: 44 | Brno
Rozbalit Rozbalit vše Re: Náhrada řetězde preg_replace_callback nefunguje
echo iconv('windows-1250', 'UTF-8', $replace);
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
8.1. 12:15 Milan Uhrák | skóre: 29 | blog: milan_at_ABC
Rozbalit Rozbalit vše Re: Náhrada řetězde preg_replace_callback nefunguje
Abych své hodnocení ( řešení ) vysvětlil, to, co tiskl print_r bylo jen nereprezentovatelné, proto netiskl nic. strlen( $replace ) ale hodil 19, čili jsem celou dobu bloudil v mlhách omylu.

Děkuji za nakopnutí.

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.