用PHP打开编码文件

时间:2017-02-17 17:47:13

标签: php encoding utf-8 ascii strpos

我正在使用PHP在服务器上打开一个文件。该文件似乎很普通。它在PC上的Notepad和Textedit中打开。当我们回声时,即使是PHP也可以在Web浏览器中显示它而没有任何问题。

但是当我尝试使用strpos()搜索它时除了单个字符外无法找到任何内容。如果我搜索一个包含2个或更多字符的字符串,则找不到任何内容。

我尝试将其编码为UTF-8,并将其检测为ASCII。所以一切似乎都在那里。

我还将我尝试阅读的文件部分隔离到只有250个字符。它们在屏幕上看起来都很好。

但是strpos无法找到它。我在代码的每个部分都运行测试,我相信我的代码一切都很好。我认为这个问题源于我在屏幕上看到的字符与这些字符的确不完全匹配。

我的最后一招是编写一个函数,将每个字符转换为整数数组(如果可能的话),然后将所有字符转换回字符串。这样,我们就会100%知道我们看到的角色是真实的。

希望有人有更好的方法,或者对我错过的东西有想法吗?

我将发布以下代码:

 $content = file_get_contents($file->getPathname());  // get the file contents
 $content = substr($content, 30, 300);  // reduce the large file to just the first few lines
 $content = htmlspecialchars($content);  // try to remove any special characters from the file

$content = iconv('ASCII', 'UTF-8//IGNORE', $content);  // encode to a friendly format

$string = "JobName";  // this is the string i'm searching for

if (strpos($content, $string) !== false) {
echo "bingo";
}

else {
echo " not found ";
}

为了清楚起见,我打开的文件是从一个以.DAT格式存储数据的PC程序生成的。就像我说的,我可以使用包括PHP在内的任何程序轻松查看和阅读内容。但是当我尝试搜索时,就好像根本不能识别内容一样。

我不知道如何在StackOverflow上传文件,但如果有人可以告诉我该怎么做,那么我很乐意自己发布文件。

1 个答案:

答案 0 :(得分:0)

非常感谢你的帮助ARKASCHA。我能够找到一个在线HexEditor,当我看到这些字符时,似乎这个文件中的每个字符之间都有一个NUL字符。这可能就是为什么我不能用常规视图看到它。我只需要运行一个额外的函数来从文件中删除NUL字符,然后它就像它所假设的那样工作。再次感谢。

相关问题