سؤال

أحاول استبدال السلاسل في مستند 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 - يعمل مع Doc، وليس مجانيًا
PHPDocX - DocX فقط، يحتاج إلى Zend.

إذا كان بإمكانك الوصول إلى خدمة ويب، فانظر دوكموسيس الخدمات السحابية نظرًا لأنه يمكنها دمج ملف مستند مع بياناتك وإعطائك مستندًا/pdf/أخرى.يمكنك النشر عبر https إلى الخدمة لتقديم الطلب، لذا فهو أمر مباشر جدًا من PHP.

هناك طرق عديدة للتعامل مع ملف مستند Word على نظام التشغيل Linux

  1. antiword - ليس فعالاً كثيراً لأنه يتحول إلى نص عادي.
  2. pyODconvert
  3. open-office أو liboffice - من خلال UNO
  4. unoconv الأداة المساعدة - تحتاج إلى إذن التثبيت على الخادم

يوجد برنامج نصي واحد بيثون وهو الأكثر استخدامًا لتحويل الملفات عبر الإنترنت ولكنك تحتاج إلى تحويل هذه الملفات من خلال سطر الأوامر.

لا يوجد حل محدد ومرضي للتعامل مع ملفات الكلمات باستخدام كود php فقط.

لقد بحثت لفترة طويلة للوصول إلى هذا الاقتراح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top