2013-03-30 2 views
3

파일의 단어 수를 계산해야하는 시나리오가 있습니다. 다른 파일 형식이 .doc, .xls, .pdf.txt입니다. 이 방법을 계산에 사용하고 있습니다 :doc, xls, pdf 및 txt 파일의 단어 수 계산 방법

<form method="post" action="" enctype="multipart/form-data"> 
    <input type="file" name="docfile" /> 
    <input type="submit" name="submit" /> 
</form> 

<?php 
    if(isset($_POST['submit'])){ 
     $file = $_FILES['docfile']['name']; 
     $file = str_replace(" ","_",$file); 
     //$file = file_get_contents($file); 

     $ext = pathinfo($file, PATHINFO_EXTENSION); 
     move_uploaded_file($_FILES['docfile']['tmp_name'],"uploads/".$file); 

     if($ext == "txt" || $ext == "pdf" || $ext == "doc" || $ext == "docx"){ 
      $file = file_get_contents("uploads/".$file); 
      echo str_word_count($file); 
     } 
    } 
?> 

그러나 올바른 단어 수를 반환하지 않습니다.

+1

무엇을 돌려 줍니까? 'str_word_count ($ file, 0)' – brbcoding

+0

을 사용하면 카운트가 반환됩니다. – user2226181

+0

나는 혼란 스럽다 ... 계산을 돌려 보내지 않는다? 하지만 그것은 계산을 반환하고 있습니까? – brbcoding

답변

0

어려운 작업이 있습니다. .doc.pdf.xls은 읽기 쉽지 않습니다. 테스트하려면 notepad 또는 gedit과 같은 기본 텍스트 편집기로 pdf를여십시오. 넌 멍청한 것처럼 보일거야. 이것은 파일 내용을 읽을 때 PHP가 보는 것과 같은 일입니다.

.xls.doc은 PHPWord 및 PHPExcel로 PHPOffice에서 파싱 할 수 있습니다. 이 라이브러리를 조사해야합니다. 나는 PDF에 대해서는 아무 것도 모른다. 그러나 아마 뭔가있을 것이다.

비슷한 인터페이스를 구현하는 일련의 클래스를 작성하여 확장 프로그램에 따라 전환 할 수 있도록하는 것이 좋습니다.

+0

제 경우에는 작동하지 않았습니다. – user2226181

+0

그게 정확히 포인트입니다. PHP는 텍스트를 이해하지만 pdf, doc, xls 및 기타 텍스트가 아닌 파일 형식의 내용은 이해할 수 없습니다. PHP 함수는 간단한 텍스트로만 작동합니다. –

+0

이 대답을 더 명확하게 편집했습니다. – jcbwlkr

3

Apache Tika은 많은 문서 유형을 인식하고 메타 정보를 추출 할 수있는 Java 프레임 워크입니다. 그것은 인식 할 수있는 많은 문서 유형에 대한 단어 수를 확인할 수 있습니다.

PhpTikaWrapper이라는 PHP 래퍼가 있으므로이 PHP 프레임 워크에 대한 Java 프레임 워크를 언급합니다. 나는 래퍼를 사용한 적이 없지만 Apache Tika는 메타 정보를 추출 할 수 있으므로 래퍼를 조사하면 도움이 될 수 있습니다.

0

나는 doc, docx, pdf 및 txt 파일에 대한 단어, 줄 및 페이지 수를 제공하는 웹 및 스택 오버플로에서 발견되는 다양한 방법을 통합하는 범용 클래스에서 작업 해 왔습니다. 나는 그것이 사람들에게 사용되기를 바랍니다. 누구나 RTF를 사용할 수 있다면 pull 요청을 좋아할 것입니다! https://github.com/joeblurton/doccounter

+0

이 패키지를 사용해 보셨습니까? 나는 이것을 시험해 보았고 제대로 작동하지 않았다. 그것의 PDF에 대한 전혀 작동하지 않습니다. –

+0

나는 이것이 더 강력 할 것으로 기대했지만 AWS 접근법을 선호하여 포기했다.필자는 형식을 리버스 엔지니어링하지 않고 공유 호스팅에서 작동하는 솔루션을 찾을 수 없었습니다. 그래서 헤드리스 리브레 오피스와 우분투의 pdftotext cli 프로그램 (모든 Poppler와 함께 제공됩니다)의 혼합을 사용하여 모든 문서의 변환을 처리했습니다 , 그리고 나서 Unix wc 프로그램의 출력을 사용하여 줄과 단어를 얻었습니다. 리플 로우 문제를 피하기 위해 독점적 인 글꼴을 많이 설치해야했지만 모든 문서를 PDF로 변환하면 페이지 수를 계산할 수 있습니다. 그것은 고통이었습니다. 그리고 천천히. – mimsy

관련 문제