2017-02-17 66 views
1

我正在用PHP打开服务器上的文件。该文件似乎很普通。它在PC上的记事本和文本编辑器中打开。当我们回应时,即使PHP可以在Web浏览器中没有任何问题的情况下显示它。用PHP打开编码文件

但是,当我尝试使用strpos()搜索它时,除了单个字符外,它找不到任何东西。如果我搜索有2个或更多字符的字符串,它不会找到任何内容。

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

我也将文件中我想要读取的部分隔离为只有250个字符。他们在屏幕上看起来都很好。

但条码找不到它。我在我的代码的每个部分都运行了测试,并且我相信我的代码一切正常。我相信这个问题是由于我在屏幕上看到的角色并不完全符合这些角色真正的角色。

我最后的手段是编写一个函数,将每个字符转换为整数数组(如果甚至可能的话),然后将所有字符转换回字符串。这样,我们会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格式的数据的电脑程序生成的。就像我说的,我可以使用包括PHP在内的任何程序轻松查看和阅读内容。但是当我尝试搜索时,它就好像根本不识别内容。

我不知道如何在StackOverflow上上传文件,但如果有人能告诉我如何做,那么我会很乐意发布文件本身。

+0

只需使用“hexeditor”来检查该文件,检查那里真正使用的字符。 – arkascha

+0

请不要在评论中添加详细信息。在你的问题下面有一个'edit'链接。 _用它_。 – arkascha

+0

你能提供这个文件吗? –

回答

0

非常感谢您的帮助ARKASCHA。我能够找到一个在线的HexEditor,当我看到这些字符时,似乎在这个文件中的每个字符之间都有一个NUL字符。这可能是我为什么不能定期看到它的原因。我只需要运行一个额外的函数来从文件中删除NUL字符,然后按照它的假设工作。再次感谢。