Portál AbcLinuxu, 5. května 2025 18:48
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:
echo iconv('windows-1250', 'UTF-8', $replace);
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.