Náhrada řetězde preg_re place_callback nefunguje

Milan Uhrak <[email protected]> Mon, 6 Jan 2020 15:08:42 +0100 (CET)
Newsgroups gmane.user-groups.linux.czech
Message-ID <[email protected]>
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
&lt;pre&gt; 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.

Zobrazit: http://www.abclinuxu.cz/poradna/programovani/show/452118