Heim > Backend-Entwicklung > PHP-Tutorial > Wie extrahiere ich Text aus Word-, Excel- und PowerPoint-Dateien mit PHP?

Wie extrahiere ich Text aus Word-, Excel- und PowerPoint-Dateien mit PHP?

Patricia Arquette
Freigeben: 2024-11-17 19:42:02
Original
908 Leute haben es durchsucht

How to Extract Text from Word, Excel, and PowerPoint Files Using PHP?

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);

        }// 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;

    }

    // ...

}

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"; //content file name

        $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; //loop through slide files

            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");

//$docObj = new DocxConversion("test.docx");

//$docObj = new DocxConversion("test.xlsx");

//$docObj = new DocxConversion("test.pptx");

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage