Можно ли извлечь данные из слова do c и использовать содержимое определенных разделов в слове do c для создания нового - PullRequest
0 голосов
/ 27 мая 2020

Добрый день,

Я начал кодирование для извлечения информации из текстового документа, и мне нужно использовать некоторую информацию из этого документа, чтобы создать новый документ только с соответствующей информацией, я бы хотел чтобы узнать, возможно ли это сделать.

Что я хочу сделать: такую ​​информацию, как имя, фамилию, контактный номер и т. Д., Которую я могу извлечь из документа и переместить в форму HTML или другим способом, который я могу использовать для заполнения нового текстовый документ. Нужно ли мне заставлять пользователей загружать несколько файлов и сообщать им, какая информация мне нужна при каждой загрузке файла? Не уверены, возможно ли то, что я прошу?

Мой код ниже:

HTML

<form action="php/uploadExtract.php" method="post" 
 enctype="multipart/form-data" style="border: 1px solid #1f1f1f; 
   padding: 20px; position: absolute; top: 50%; left: 50%;  
      transform: translate(-50%, -50%);"> 

  <h2>Upload File</h2> 
  <input type="file" name="file" id="fileSelect"><br><br> 
  <input type="submit" name="submit" value="Upload"><br><br> 

  <div> Upload your document here</div> 
</form> 

PHP

<?php 

require("docExtract.php");

$target_dir = "../img/";
$target_file = $target_dir . basename($_FILES["file"]["name"]);
$uploadOk = 1;


if ($uploadOk == 0) {
  echo "Sorry, your file was not uploaded.";

} else {
  if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
    echo "The file ". basename( $_FILES["file"]["name"]). " has been uploaded.";
  } else {
    echo "Sorry, there was an error uploading your file.";
  }
}

$docObj = new Doc2Txt($target_file);
//$docObj = new Doc2Txt("test.doc");

$txt = $docObj->convertToText();


 echo $txt;
    ?> 

PHP Класс

class Doc2Txt {
    private $filename;

    public function __construct($filePath) {
        $this->filename = $filePath;
    }

    private function read_doc() {
        $fileHandle = fopen($this->filename, "r");
        $line = @fread($fileHandle, filesize($this->filename));
        $lines = explode(chr(0x0D),$line);
        $outtext = "";
        foreach($lines as $thisline)
          {
            $pos = strpos($thisline, chr(0x00));
            if (($pos !== FALSE)||(strlen($thisline)==0))
              {
              } else {
                $outtext .= $thisline." ";
              }
          }
         $outtext = preg_replace("/[^a-zA-Z0-9\s\,\.\-\n\r\t@\/\_\(\)]/","",$outtext);
        return $outtext;
    }

    private function read_docx(){

        $striped_content = '';
        $content = '';

        $zip = zip_open($this->filename);

        if (!$zip || is_numeric($zip)) return false;

        while ($zip_entry = zip_read($zip)) {

            if (zip_entry_open($zip, $zip_entry) == FALSE) continue;

            if (zip_entry_name($zip_entry) != "word/document.xml") continue;

            $content .= zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));

            zip_entry_close($zip_entry);
        }// end while

        zip_close($zip);

        $content = str_replace('</w:r></w:p></w:tc><w:tc>', " ", $content);
        $content = str_replace('</w:r></w:p>', "\r\n", $content);
        $striped_content = strip_tags($content);

        return $striped_content;
    }

    public function convertToText() {

        if(isset($this->filename) && !file_exists($this->filename)) {
            return "File Does Not exists";
        }

        $fileArray = pathinfo($this->filename);
        $file_ext = $fileArray['extension'];
        if($file_ext == "doc" || $file_ext == "docx")
        {
            if($file_ext == "doc") {
                return $this->read_doc();
            } else {
                return $this->read_docx();
            }
        } else {
            return "Invalid File Type";
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...