This commit is contained in:
Laurent Destailleur 2019-08-27 12:33:42 +02:00
commit 69688a22e0
4 changed files with 30 additions and 12 deletions

View File

@ -5671,7 +5671,7 @@ function dol_string_is_good_iso($s)
$ok=1;
for($scursor=0;$scursor<$len;$scursor++)
{
$ordchar=ord($s{$scursor});
$ordchar=ord($s[$scursor]);
//print $scursor.'-'.$ordchar.'<br>';
if ($ordchar < 32 && $ordchar != 13 && $ordchar != 10) { $ok=0; break; }
if ($ordchar > 126 && $ordchar < 160) { $ok=0; break; }

View File

@ -119,7 +119,7 @@ function _val($val)
*/
for ($c = 0; $c < $strlen_var; ++$c) {
$ord_var_c = ord($val{$c});
$ord_var_c = ord($val[$c]);
switch (true) {
case $ord_var_c == 0x08:
@ -142,18 +142,18 @@ function _val($val)
case $ord_var_c == 0x2F:
case $ord_var_c == 0x5C:
// double quote, slash, slosh
$ascii .= '\\'.$val{$c};
$ascii .= '\\'.$val[$c];
break;
case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
// characters U-00000000 - U-0000007F (same as ASCII)
$ascii .= $val{$c};
$ascii .= $val[$c];
break;
case (($ord_var_c & 0xE0) == 0xC0):
// characters U-00000080 - U-000007FF, mask 110XXXXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c, ord($val{$c + 1}));
$char = pack('C*', $ord_var_c, ord($val[$c + 1]));
$c += 1;
$utf16 = utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
@ -162,7 +162,7 @@ function _val($val)
case (($ord_var_c & 0xF0) == 0xE0):
// characters U-00000800 - U-0000FFFF, mask 1110XXXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c, ord($val{$c + 1}), ord($val{$c + 2}));
$char = pack('C*', $ord_var_c, ord($val[$c + 1]), ord($val[$c + 2]));
$c += 2;
$utf16 = utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
@ -171,7 +171,7 @@ function _val($val)
case (($ord_var_c & 0xF8) == 0xF0):
// characters U-00010000 - U-001FFFFF, mask 11110XXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c, ord($val{$c + 1}), ord($val{$c + 2}), ord($val{$c + 3}));
$char = pack('C*', $ord_var_c, ord($val[$c + 1]), ord($val[$c + 2]), ord($val[$c + 3]));
$c += 3;
$utf16 = utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
@ -180,7 +180,7 @@ function _val($val)
case (($ord_var_c & 0xFC) == 0xF8):
// characters U-00200000 - U-03FFFFFF, mask 111110XX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c, ord($val{$c + 1}), ord($val{$c + 2}), ord($val{$c + 3}), ord($val{$c + 4}));
$char = pack('C*', $ord_var_c, ord($val[$c + 1]), ord($val[$c + 2]), ord($val[$c + 3]), ord($val[$c + 4]));
$c += 4;
$utf16 = utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
@ -189,7 +189,7 @@ function _val($val)
case (($ord_var_c & 0xFE) == 0xFC):
// characters U-04000000 - U-7FFFFFFF, mask 1111110X
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c, ord($val{$c + 1}), ord($val{$c + 2}), ord($val{$c + 3}), ord($val{$c + 4}), ord($val{$c + 5}));
$char = pack('C*', $ord_var_c, ord($val[$c + 1]), ord($val[$c + 2]), ord($val[$c + 3]), ord($val[$c + 4]), ord($val[$c + 5]));
$c += 5;
$utf16 = utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));

View File

@ -258,9 +258,6 @@ $langs = new Translate('..', $conf);
if (GETPOST('lang', 'aZ09')) $langs->setDefaultLang(GETPOST('lang', 'aZ09'));
else $langs->setDefaultLang('auto');
$bc[false]=' class="bg1"';
$bc[true]=' class="bg2"';
/**
* Load conf file (file must exists)

View File

@ -1260,4 +1260,25 @@ class FunctionsLibTest extends PHPUnit\Framework\TestCase
return true;
}
/**
* testDolStringIsGoodIso
*
* @return boolean
*/
public function testDolStringIsGoodIso()
{
global $conf, $langs;
$chaine='This is an ISO string';
$result = dol_string_is_good_iso($chaine);
$this->assertEquals($result, 1);
$chaine='This is a not ISO string '.chr(0);
$result = dol_string_is_good_iso($chaine);
$this->assertEquals($result, 0);
return true;
}
}