Вопрос

Я пытаюсь заменить строки в документе Word, прочитав файл в переменную. $content а затем с помощью str_ireplace() изменить строку.Я могу прочитать содержимое файла, но str_ireplace(), похоже, не может заменить строку.Я предполагал, что это так, потому что строка «двоично безопасна» согласно документации PHP.Извините, я новичок в манипуляциях с файлами PHP, поэтому все это для меня совершенно ново.

Это то, что я написал.

copy('jack.doc' , 'newFile.doc');
$handle = fopen('newFile.doc','rb');
$content = '';

while (!feof($handle))
{
    $content .= fread($handle, 1);
}
fclose($handle);

$handle = fopen('newFile.doc','wb');
$content = str_ireplace('USING_ICT_BOX', 'YOUR ICT CONTENT', $content);
fwrite($handle, $content);
fclose($handle);

Когда я загружаю новый файл, он открывается в MS Word как следует, но показывает старую строку, а не ту, которую следует заменить.

Могу ли я исправить эту проблему?Есть ли лучший инструмент, который я могу использовать для замены строк в MS Word через PHP?

Это было полезно?

Решение 4

Я собираюсь выбрать PHPWord www.phpword.codeplex.com, так как считаю, что учителя получат Office 2007 в следующем году, а также я постараюсь найти способ конвертировать файлы .docx и .doc через PHP, чтобы поддержать их в среднее время.

Другие советы

У меня такое же требование для редактирования .doc или .docx файл, используя php, и я нашел для него решение.И я написал об этом пост :: http://www.onlinecode.org/update-docx-file-using-php/

copy('jack.doc' , 'newFile.doc');
$full_path =  'newFile.doc';
if($zip_val->open($full_path) == true)
{
    // In the Open XML Wordprocessing format content is stored.
    // In the document.xml file located in the word directory.

    $key_file_name = 'word/document.xml';
    $message = $zip_val->getFromName($key_file_name);               

    $timestamp = date('d-M-Y H:i:s');

    // this data Replace the placeholders with actual values
    $message = str_replace("client_full_name",      "onlinecode org",       $message);
    $message = str_replace("client_email_address",  "ingo@onlinecode.org",  $message);
    $message = str_replace("date_today",            $timestamp,         $message);      
    $message = str_replace("client_website",        "www.onlinecode.org",   $message);      
    $message = str_replace("client_mobile_number",  "+1999999999",          $message);

    //Replace the content with the new content created above.
    $zip_val->addFromString($key_file_name, $message);
    $zip_val->close();
}

Возможно, это укажет вам правильное направление: http://davidwalsh.name/read-pdf-doc-file-php

Решения, которые я нашел до сих пор (хотя и не тестировал):
Докверт - работает для Doc, бесплатно, но не может использоваться напрямую
PHPWordLib - работает для Дока, не бесплатно
PHPDocX - Только DocX, нужен Zend.

Если вы можете получить доступ к веб-сервису, посмотрите Докмосис Облачные сервисы, поскольку они могут объединить файл документа с вашими данными по почте и вернуть вам документ/pdf/другой.Вы можете отправить сообщение в службу по протоколу https, чтобы сделать запрос, так что это довольно просто из PHP.

Существует много способов обработки файла документа Word в Linux.

  1. antiword - не очень эффективно, поскольку преобразуется в обычный текст.
  2. pyODconvert
  3. open-office или liboffice - через ООН
  4. unoconv утилита - необходимо разрешение на установку на сервере

Существует один скрипт Python, который наиболее удобен для онлайн-конвертации файлов, но вам необходимо конвертировать этот файл через командную строку.

Не существует конкретного и удовлетворительного решения для обработки файлов Word с использованием только кода PHP.

Я долго искал этого предложения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top