如何解决使用 PHP 在文件中搜索 ANSI 特殊字符
我有以下 binary file,我需要阅读它并找到字符“®️”。
如果我在 Windows 记事本中打开文件,我可以找到该字符。 如果我打开托管文件,我可以找到字符
但是在尝试使用 PHP 时,我找不到该字符。
这是我迄今为止尝试过的:
$handle = fopen($filename,"r");
$fsize = filesize($filename);
$contents = "";
while (!feof($handle)) {
$contents .= fread($handle,8192);
}
$r = "®️";
$strpos = strpos($contents,$r);
$mb_strpos = mb_strpos($contents,$r);
echo "<p>strpos function searching for '{$r}': " . ($strpos === false ? "Not found" : $strpos) . "</p>";
echo "<p>mb_strpos function searching for '{$r}': " . ($mb_strpos === false ? "Not found" : $mb_strpos) . "</p>";
$found = false;
for ($i = 0; $i < strlen($contents); $i++) {
$byte = $contents[$i];
if ($byte == $char) {
echo "<p>reading character per character of 'contents',{$r} position is {$i}</p>";
$found = true;
break;
}
}
我也试过使用函数 stream_get_contents
$offset = 0;
while ($byte = stream_get_contents($handle,1,$offset)) {
if ($byte == "$r") {
echo "<p>{$r} position is {$i}</p>";
break;
}
$offset++;
}
而且我还尝试使用以下函数更改变量 $r 的编码
utf8_decode($r);
mb_convert_encoding($r,'CP1252');
mb_convert_encoding($r,'CP1252','UTF-8');
mb_convert_encoding($r,'Windows-1252');
mb_convert_encoding($r,'Windows-1252','UTF-8')
有谁知道如何正确找到文件中的字符?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。