Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Zliczanie, ilości znaków ze spacją i bez spacji oraz akapitów w plikach docx
turek93
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 11.08.2017

Ostrzeżenie: (0%)
-----


Dzień dobry,
jestem nowym użytkownikiem forum, a sprowadza mnie tu potrzeba związana z liczeniem znaków.

Potrzebuję skryptu zliczającego ilość znaków ze spacją, bez spacji oraz ilość akapitów w pliku. Dotychczas udało mi się utworzyć poniższy kod:


Wczytywanie pliku:

  1. <form method="post" action="" enctype="multipart/form-data">
  2. <input type="file" name="docfile" />
  3. <input type="submit" name="submit" />
  4. </form>
  5.  
  6.  
  7. <?php
  8. if(isset($_POST['submit'])){
  9. $file = $_FILES['docfile']['name'];
  10. $file = str_replace(" ","_",$file);
  11. //$file = file_get_contents($file);
  12.  
  13. $ext = pathinfo($file, PATHINFO_EXTENSION);
  14. move_uploaded_file($_FILES['docfile']['tmp_name'],"uploads/".$file);
  15.  
  16. if($ext == "txt" || $ext == "pdf" || $ext == "doc" || $ext == "docx" || $ext == "odt"){
  17. $file = file_get_contents("uploads/".$file);
  18.  
  19. }
  20. }
  21. ?>
  22.  


Następnie posiadając wgrany plik, podaję go na zliczanie:


  1. <?php
  2.  
  3. /*Name of the document file*/
  4. $document = 'zliczanie.docx';
  5.  
  6. /**Function to extract text*/
  7. function extracttext($filename) {
  8. //Check for extension
  9. $splited = explode('.', $filename);
  10. $ext = array_pop($splited);
  11.  
  12. //if its docx file
  13. if($ext == 'docx')
  14. $dataFile = "word/document.xml";
  15. //else it must be odt file
  16. else
  17. $dataFile = "content.xml";
  18.  
  19. //Create a new ZIP archive object
  20. $zip = new ZipArchive;
  21.  
  22. // Open the archive file
  23. if (true === $zip->open($filename)) {
  24. // If successful, search for the data file in the archive
  25. if (($index = $zip->locateName($dataFile)) !== false) {
  26. // Index found! Now read it to a string
  27. $text = $zip->getFromIndex($index);
  28. // Load XML from a string
  29. // Ignore errors and warnings
  30. $xml = DOMDocument::loadXML($text, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);
  31. // Remove XML formatting tags and return the text
  32. return strip_tags($xml->saveXML());
  33. }
  34. //Close the archive file
  35. $zip->close();
  36. }
  37.  
  38. // In case of failure return a message
  39. return null;
  40. }
  41.  
  42.  
  43.  
  44.  
  45. echo mb_strlen(trim(extracttext($document)));
  46. echo '<br/>';
  47. echo mb_strlen(extracttext($document));
  48. ?>



Wynik jaki uzyskuje to 1155 znaków przy użyciu funkcji trim, 1157 bez funkcji trim.

Powinienem uzyskać 1010 samych znaków bez spacji oraz 1133 ze spacjami.

Dopiero niedawno rozpocząłem swoją przygodę z programowaniem, więc proszę nie zbrukać mnie z poziomem chodnika.
Dziękuję za wszelkie opinie i pomoc.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 04:10