Closed
Description
Description
edit: warning, there's conflicting definitions of 7bit.. according to https://galprop.stanford.edu/bugs/docs/en/html/api/Bugzilla/Util.html it should be
Returns true is the string contains only 7-bit characters (ASCII 32 through 126, ASCII 10 (LineFeed) and ASCII 13 (Carrage Return).
which i guess would be ($o >= 32 && $o <=126) || $o === 10 || $o === 13
, but if that definition is correct, mb_check_encoding's current behavior is still wrong here.. moving on
The following code:
<?php
function is_7bit_clean(string $str):bool{
for($i=0,$imax=strlen($str);$i<$imax;++$i){
if(ord($str[$i]) & (1 << 7)){
return false;
}
}
return true;
}
$str = chr(255);
var_dump(is_7bit_clean($str) === mb_check_encoding($str, '7bit'));
Resulted in this output:
bool(false)
But I expected this output instead:
bool(true)
as of 8.1.2. probably related to GH #7712
3v4l: https://3v4l.org/HZh8A
PHP Version
PHP 8.1.2
Operating System
No response