Maison  >  Article  >  développement back-end  >  Comment analyser correctement les fichiers .DOC en PHP et éviter les erreurs d'interprétation des caractères ?

Comment analyser correctement les fichiers .DOC en PHP et éviter les erreurs d'interprétation des caractères ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-30 06:21:28831parcourir

How to Properly Parse .DOC Files in PHP and Avoid Character Interpretation Errors?

Lecture de fichiers .DOC en PHP

La lecture de fichiers .DOC en PHP peut être difficile en raison de leur format binaire. Cependant, vous pouvez les analyser à l'aide du code fourni par quelqu'un, mais cela peut entraîner une interprétation incorrecte des caractères.

Pour résoudre ce problème, vous devez apporter la modification suivante :

<code class="php">$line = @fread($fileHandle, filesize($userDoc));
$lines = explode(chr(0x0A),$line);</code>

Ce changement remplace le caractère chr(0x0D) par chr(0x0A). Windows stocke les nouvelles lignes sous la forme rn (retour chariot plus saut de ligne), tandis que les systèmes UNIX utilisent n (saut de ligne uniquement). En utilisant chr(0x0D), vous traitez le caractère de nouvelle ligne DOS/Windows, mais le fichier est stocké au format Unix.

De plus, considérez le code suivant pour lire les fichiers .docx en PHP :

<code class="php">function read_file_docx($filename){

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

    if(!$filename || !file_exists($filename)) return false;

    $zip = zip_open($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;
}</code>

Ce code :

  • Ouvre le fichier .docx sous forme d'archive ZIP.
  • Extrait le fichier "word/document.xml".
  • Analyse le contenu XML.
  • Supprime les balises et les caractères inutiles.
  • Renvoie le contenu du texte analysé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn