Добрый день,
Я начал кодирование для извлечения информации из текстового документа, и мне нужно использовать некоторую информацию из этого документа, чтобы создать новый документ только с соответствующей информацией, я бы хотел чтобы узнать, возможно ли это сделать.
Что я хочу сделать: такую информацию, как имя, фамилию, контактный номер и т. Д., Которую я могу извлечь из документа и переместить в форму 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";
}
}
}