So extrahieren Sie Text aus Word- und anderen Office-Dateien in PHP
Abrufen von Text aus Microsoft Office-Dokumenten, einschließlich Word (.doc und . docx), Excel (.xlsx) und PowerPoint (.pptx) sind häufig für Aufgaben wie die Suche innerhalb eines Dokuments erforderlich Inhalt.
Lesen von Word-Dokumenten
Für .doc-Dateien kann ein Binärdatei-Ansatz verwendet werden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | class DocxConversion{
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 ;
}
}
|
Nach dem Login kopieren
Für .docx-Dateien Da es sich im Wesentlichen um ZIP-Dateien mit XML handelt, müssen Sie:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | class DocxConversion{
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 );
}
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 ;
}
}
|
Nach dem Login kopieren
Excel lesen Dateien
Dies kann durch Extrahieren von Text aus der Datei „xl/sharedStrings.xml“ in der Excel-Datei erfolgen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | class DocxConversion{
function xlsx_to_text( $input_file ){
$xml_filename = "xl/sharedStrings.xml" ;
$zip_handle = new ZipArchive;
$output_text = "" ;
if (true === $zip_handle ->open( $input_file )){
if (( $xml_index = $zip_handle ->locateName( $xml_filename )) !== false){
$xml_datas = $zip_handle ->getFromIndex( $xml_index );
$xml_handle = DOMDocument::loadXML( $xml_datas , LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);
$output_text = strip_tags ( $xml_handle ->saveXML());
} else {
$output_text .= "" ;
}
$zip_handle ->close();
} else {
$output_text .= "" ;
}
return $output_text ;
}
}
|
Nach dem Login kopieren
PowerPoint-Dateien lesen
Um Text aus einer PowerPoint-Präsentation zu extrahieren, öffnen Sie jede Foliendatei (.xml) in der ZIP-Datei Container:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | class DocxConversion{
function pptx_to_text( $input_file ){
$zip_handle = new ZipArchive;
$output_text = "" ;
if (true === $zip_handle ->open( $input_file )){
$slide_number = 1;
while (( $xml_index = $zip_handle ->locateName( "ppt/slides/slide" . $slide_number . ".xml" )) !== false){
$xml_datas = $zip_handle ->getFromIndex( $xml_index );
$xml_handle = DOMDocument::loadXML( $xml_datas , LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);
$output_text .= strip_tags ( $xml_handle ->saveXML());
$slide_number ++;
}
if ( $slide_number == 1){
$output_text .= "" ;
}
$zip_handle ->close();
} else {
$output_text .= "" ;
}
return $output_text ;
}
}
|
Nach dem Login kopieren
Verwendung
Um diese Klasse für die Dateikonvertierung zu verwenden, instanziieren Sie sie mit dem Dateipfad und rufen Sie die Methode „convertToText()“ auf:
1 2 3 4 5 | $docObj = new DocxConversion( "test.doc" );
echo $docText = $docObj ->convertToText();
|
Nach dem Login kopieren
Das obige ist der detaillierte Inhalt vonWie extrahiere ich Text aus Word-, Excel- und PowerPoint-Dateien mit PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!