2017-02-17 71 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字符,然後按照它的假設工作。再次感謝。