使用PHP从Docx获取文本而不丢失HTML格式
我有一个Docx文件。我可以使用PHP代码从中导出数据,但数据会丢失HTML格式。我怎样才能保持完整并提取数据 到目前为止,我的PHP代码如下:使用PHP从Docx获取文本而不丢失HTML格式,php,html,css,docx,Php,Html,Css,Docx,我有一个Docx文件。我可以使用PHP代码从中导出数据,但数据会丢失HTML格式。我怎样才能保持完整并提取数据 到目前为止,我的PHP代码如下: <?php function read_file_docx($filename){ $striped_content = ''; $content = ''; if(!$filename || !file_exists($filename)) return false; $zi
<?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;
}
$filename = "sample.docx";// or /var/www/html/file.docx
$content = read_file_docx($filename);
if($content !== false) {
echo nl2br($content);
}
else {
echo 'Couldn\'t the file. Please check that file.';
}
?>
有关更多详细信息,请参见此图:
我如何才能实现同样的效果,以便在
$content
变量中按原样获取文本?当前,$content变量实际包含什么?(不仅仅是您在浏览器屏幕上看到的内容,而是实际的原始内容。)。可能是HTML,但没有相关的样式表信息,例如,这将有助于布局。HTML通常也需要CSS来创建正确的表示。当您保存HTML并将其加载到浏览器中时,是否也会遇到同样的问题?如果为true,则您可以将空格替换为以更正格式如果您看到我的代码它echo$content
,它应该使用html属性进行提取,因为当我从word复制它并只是粘贴到文本编辑器中时,它是原样的,请参见附件图像,您可以更新我的代码吗?如果可能,我将尝试使用html。即使通过剪贴板将部分复制到HTML编辑器,并且在复制过程中更改为HTML,这也并不意味着DOCX文件中存在HTML。据我所知,它是XML。“如果你看到我的代码,它会回显$content”……是的,但是当你在浏览器中查看它时,你只会看到文本,因为浏览器会将该内容中的任何HTML都视为标记,并使用它来呈现页面。因此,我们不能看到一切。这就是为什么我要求您向我们展示原始内容,而不是呈现的内容。请在你的问题中粘贴(一个样本)。(您可以使用浏览器的“查看源代码”功能来查找。)当前,$content变量实际包含哪些内容?(不仅仅是您在浏览器屏幕上看到的内容,而是实际的原始内容。)。可能是HTML,但没有相关的样式表信息,例如,这将有助于布局。HTML通常也需要CSS来创建正确的表示。当您保存HTML并将其加载到浏览器中时,是否也会遇到同样的问题?如果为true,则您可以将空格替换为以更正格式如果您看到我的代码它echo$content
,它应该使用html属性进行提取,因为当我从word复制它并只是粘贴到文本编辑器中时,它是原样的,请参见附件图像,您可以更新我的代码吗?如果可能,我将尝试使用html。即使通过剪贴板将部分复制到HTML编辑器,并且在复制过程中更改为HTML,这也并不意味着DOCX文件中存在HTML。据我所知,它是XML。“如果你看到我的代码,它会回显$content”……是的,但是当你在浏览器中查看它时,你只会看到文本,因为浏览器会将该内容中的任何HTML都视为标记,并使用它来呈现页面。因此,我们不能看到一切。这就是为什么我要求您向我们展示原始内容,而不是呈现的内容。请在你的问题中粘贴(一个样本)。(您可以使用浏览器的“查看源”功能查找它。)