2017-02-17 1 views
1

PHP로 서버에 파일을 여는 중입니다. 파일은 평범한 것 같습니다. 메모장과 텍스트 편집기에서 PC로 열립니다. PHP조차도 웹 브라우저에서 아무런 문제없이 표시 할 수 있습니다.PHP로 인코딩 된 파일 열기

하지만 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에서 파일을 업로드하는 방법을 모르지만 다른 사람이 파일을 어떻게 작성하는지 알려주면 기꺼이 파일 자체를 게시합니다.

+0

"hexeditor"를 사용하여 해당 파일을 검사하고 거기에서 실제로 사용되는 문자를 확인하십시오. – arkascha

+0

주석에 _not_ 세부 사항을 추가하지 마십시오. 귀하의 질문에 대한 '편집'링크가 있습니다. _그걸 써_. – arkascha

+0

이 파일을 제공 할 수 있습니까? –

답변

0

도움을 주셔서 감사합니다. ARKASCHA. 온라인 HexEditor를 찾을 수 있었고 문자를 보았을 때이 파일의 모든 단일 문자 사이에 NUL 문자가있는 것으로 보입니다. 그게 내가 규칙적인 시각으로 볼 수없는 이유 일거야. 파일에서 NUL 문자를 제거하기위한 추가 기능을 실행하기 만하면됩니다. 다시 한번 감사드립니다.