2017-10-19 8 views
0

Je lis les fichiers .docx en utilisant zip_read(), je me rends compte que dans .docx, un saut de page a le code <w:br w:type="page"></w:br>. Je veux le transformer en <br style="page-break-before: always"> afin que je puisse le sortir en HTML. Comment puis je faire ça? Merci!Comment faire un saut de ligne dans .docx en sauts de ligne en HTML en utilisant PHP

+0

que diriez-vous 'str_replace'? – rtfm

+0

semble ne pas fonctionner – user2335065

+1

nous ne pouvons pas deviner votre code. – rtfm

Répondre

0

C'est un format de fichier XML, afin que vous puissiez le lire avec DOM:

$xml = <<< WORD 
<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<?mso-application progid="Word.Document"?> 
<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"> 
    <w:body> 
    <w:br w:type="page"></w:br> 
    </w:body> 
</w:wordDocument> 
WORD; 

libxml_use_internal_errors(true); 
$dom = new DOMDocument(); 
$dom->loadXML($xml); 
libxml_clear_errors(); 

$xpath = new DOMXPath($dom); 
$xpath->registerNamespace('w', 'http://schemas.microsoft.com/office/word/2003/wordml'); 

// find all the page breaks 
foreach ($xpath->evaluate('//w:br[@w:type="page"]') as $page_break) { 
    // create an html break element with some style attribute 
    $html_break = $dom->createElement('br'); 
    $html_break->setAttribute('style', 'page-break-before: always'); 
    // replace the page break with the html break in the document 
    $page_break->parentNode->replaceChild($html_break, $page_break); 
} 
echo $dom->saveHTML(); 

Cela vous permet de convertir les sauts de page de mot à sauts de page html comme l'a demandé:

<?mso-application progid="Word.Document"><w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"> 
    <w:body> 
    <br style="page-break-before: always"> 
    </w:body> 
</w:wordDocument> 

Non que aurait beaucoup de sens étant donné que le reste du mot xml est toujours comme il était. Mais c'est comme ça que vous traiteriez avec un analyseur XML.

Assurez-vous de consulter https://github.com/PHPOffice/PHPWord ainsi