2016-11-29 4 views
-4

Я пытаюсь прочитать файл docx, используя приведенный ниже код, это работает отлично, но мой файл docx имеет жирный шрифт, заголовки и т. Д., Но ниже код не отображается так же, как слово документ.не может читать файл docx так же, как с помощью php

demo docx file

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

    //echo $content; 
    //echo "<hr>"; 
    //file_put_contents('1.xml', $content); 

    $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 = "testing.docx";// or /var/www/html/file.docx 

$content = read_file_docx($filename); 
if($content !== false) { 

    $viewResume = nl2br($content); 

    $str = $viewResume; 
    $keyword = 'When'; 
    $str = preg_replace("/\b([a-z]*${keyword}[a-z]*)\b/i","<b style='color:#F00;'>$1</b>",$str); 
    echo "$str"; 
    echo preg_match_all('([^\.\!\?]+)',$str,$keyword); 


} 
else { 
    echo 'Couldn\'t the file. Please check that file.'; 
} 
+1

Что заставляет вас думать, что этот код _would_ отображает любое форматирование? – duskwuff

+0

показывает текущее содержимое, как показано ниже. Новые изменения Пожалуйста, проверьте, почему мы можем войти в систему как клиент с идентификатором персонала и паролем. done На следующем изображении вы можете видеть, что я просто вхожу в систему как клиент с подробными сведениями о персонале. Опция поиска не работает, а также не показывает детали, которые мы хотим найти. done Поиск может быть выполнен с именем, контактным номером, идентификатором электронной почты, идентификатором клиента и всем статусом. Нужно время бит Без комментариев персонал не сможет обновить статус. Выполнено Когда я обновляю клиент из штата, я не попал в то же поле –

+1

Хорошо, следующий вопрос. Вы пишете этот код? Если нет, вы хоть немного понимаете, как это работает? – duskwuff

ответ

1

DOCX является Молнии формат файла, так что вы можете распаковать его самостоятельно с помощью простого unzipper.

Там, ваш главный текст в слове/document.xml

Элементы имеют

  • <w:p>: пункты
  • <w:r>: пробежки (которые содержат стили)
  • <w:t>: который содержат текст

В y наше текущее решение, вы просто извлекаете текст (который находится внутри <w:t>. Чтобы получить стиль, вам нужно проанализировать <w:t>. Например, <w:u w:val=\"single\"/> означает подчеркнутый.

Однако это может стать довольно сложным, поэтому я предлагаю использовать уже сделанное решение, такое как Pandoc.