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 02:00 | IT novinky

Počátkem roku někdo odcizil z Intelu několik GB citlivých dat. Prvních 20 GB bylo zveřejněno [Hacker News, ZDNet].

Ladislav Hagara | Komentářů: 0
včera 19:33 | Nová verze

Bylo vydáno Ubuntu 20.04.1 LTS, tj. první opravné vydání Ubuntu 20.04 LTS s kódovým názvem Focal Fossa. Přehled novinek v poznámkách k vydání a v přehledu změn. Součástí oznámení je infografika Ubuntu od 2004 do 20.04 LTS (png).

Ladislav Hagara | Komentářů: 0
včera 18:00 | Pozvánky

MojeFedora.cz upozorňuje na letošní Flock aneb letošní online konferenci zaměřenou na přispěvatele do Fedory. Konference probíhá od zítra 7. srpna do neděle 9. srpna, viz program.

Ladislav Hagara | Komentářů: 0
včera 15:00 | Nová verze

Po půl roce od vydání verze 2.31 byla vydána verze 2.32 knihovny glibc (GNU C Library). Přehled novinek v poznámkách k vydání.

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

Dnes končí bezpečnostní konference Black Hat USA 2020 (Twitter) a začíná bezpečnostní konference DEF CON 28 (Twitter). Kvůli onemocnění COVID-19 ne v Las Vegas, ale pouze virtuálně. Na konferenci DEF CON naplánované přednášky jsou již k dispozici na DEF CON Media Serveru a na YouTube.

Ladislav Hagara | Komentářů: 1
včera 07:33 | Nová verze

Po více než pěti letech byla vydána nová verze 1.7 multiplatformního grafického editoru Pinta (Wikipedie). Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
včera 00:33 | Komunita

V září loňského roku Richard Stallman rezignoval na funkci prezidenta Free Software Foundation (FSF). Včera byl zvolen nový prezident. Je jím Geoffrey Knauth (Twitter).

Ladislav Hagara | Komentářů: 7
5.8. 18:11 | Nová verze

Mozilla na svém blogu informuje o Enhanced Tracking Protection (ETP) 2.0 aneb nové verzi rozšířené ochrany proti sledování ve Firefoxu. Nová verze chrání také před technikou redirect tracking a každých 24 hodin smaže sledovací cookies. Podrobněji na blogu věnovaném bezpečnosti.

Ladislav Hagara | Komentářů: 0
5.8. 14:33 | Nová verze

The Document Foundation oznámila na svém blogu vydání nové verze 7.0 svobodného kancelářského balíku LibreOffice. Podrobný přehled nových vlastností i s náhledy v poznámkách k vydání (cs) nebo také na Youtube a PeerTube.

Ladislav Hagara | Komentářů: 11
5.8. 13:33 | Nová verze

Byla vydána nová stabilní verze 3.2 (3.2.1967.41) webového prohlížeče Vivaldi (Wikipedie). Přehled novinek v příspěvku na blogu. Zdůraznit lze vylepšený obraz v obraze. Nejnovější Vivaldi je postaven na Chromiu 84.0.4147.108.

Ladislav Hagara | Komentářů: 25
Dokážete si představit, že by váš hlavní počítač (desktop, notebook) byl v současné době založen na architektuře jiné než x86 (x86_64)? Například ARM, POWER, RISC-V,…
 (9%)
 (12%)
 (57%)
 (16%)
 (5%)
Celkem 164 hlasů
 Komentářů: 12, poslední včera 15:14
Rozcestník

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