Menu

#15 mbstring overloaded strlen - -> format error

open
nobody
None
5
2005-12-28
2005-12-28
Anonymous
No

nashev@mail.ru

When site using mbstring overloading of functions,
function strlen return charecter count in given string
but not byte count!

And as result, pclzip library reports that bad format
archive after comparing, for example, readed block and
hiz length.

To resolve this problem you can use, for example,
functions like this:

<?php

function ByteCount($s) {
$has_mbstring = extension_loaded('mbstring')
||@dl(PHP_SHLIB_PREFIX.'mbstring.'.PHP_SHLIB_SUFFIX);
$has_mb_shadow = (int) ini_get('mbstring.
func_overload');

if ($has_mbstring && ($has_mb_shadow & 2) ) {
$size = mb_strlen($s,'latin1');
} else {
$size = strlen($s);
}
return $size;
}

function ByteSubstr($s, $start, $length) {
$has_mbstring = extension_loaded('mbstring')
||@dl(PHP_SHLIB_PREFIX.'mbstring.'.PHP_SHLIB_SUFFIX);
$has_mb_shadow = (int) ini_get('mbstring.
func_overload');

if ($has_mbstring && ($has_mb_shadow & 2) ) {
$s2 = mb_substr($s, $start, $length, 'latin1');
} else {
$s2 = substr($s, $start, $length);
}
return $s2;
}

php?>

Discussion


Log in to post a comment.