Замена строки phpword setValue не работаетPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Замена строки phpword setValue не работает

Сообщение Anonymous »

У меня есть приложение PHP, которое предназначено для объединения пользовательских данных с помощью документа Docx Word, я использую библиотеку PHPOFFICE/PHP слов для этой задачи. Проблема в том, что некоторые переменные нерегулярно заменяются, в то время как большинство переменных просто не заменяются вообще. Переменные, которые я заменяю, не содержат специальных символов, без символов и т. Д. Просто основные буквы и цифры.
Template Document
.. Контракт между нашей компанией и Propertyname с офисами на адрес 1, адрес 2, PostalCode CityName, CountryName («Клиент»). - опция1: заменить заполнителя через SetValue как рекомендовано в официальной документации.

Код: Выделить всё

// template file
$file = '../../public/formats/contracts/'.$filename;

$phpword = new \PhpOffice\PhpWord\TemplateProcessor($file);

$phpword->setValue('propertyname', $hotel_name);
$phpword->setValue('address1', $street_1);
$phpword->setValue('address2', $street_2);
$phpword->setValue('postalcode', $zip_code);
$phpword->setValue('cityname', $city);
$phpword->setValue('countryname', $country);

$phpword->saveAs('../../public/formats/generated/'.$created_at.'_'.$filename);
< /code>
Результат:
Нет замены переменных заполнителей. Пытался переименовать заполнители (например, $ {Addic1} 
или %% ADDRICE_1 %% или ADDRICE_1 ), но не результат.
Code - опция 2: заменить заполнители в одном go go graphalues

// template file
$file = '../../public/formats/contracts/'.$filename;

$phpword = new \PhpOffice\PhpWord\TemplateProcessor($file);

$phpword->setValues(array('propertyname' => $hotel_name, 'address1' => $street_1, 'address2' => $street_2, 'postalcode' => $zip_code, 'cityname' => $city, 'countryname' => $country));

$phpword->saveAs('../../public/formats/generated/'.$created_at.'_'.$filename);

Результат: без замены переменных заполнителей. напрямую < /p>

Код: Выделить всё

// Creating the new document...
$zip = new \PhpOffice\PhpWord\Shared\ZipArchive();

$document_xml = 'word/document.xml';                                        // docx content file
$template = '../../public/formats/contracts/'.$filename;                        // template file
$new_file = '../../public/formats/generated/'.$created_at.'_'.$filename;    // new file after merge
// create copy of template in temporary folder
copy($template, $new_file);

if ($zip->open($new_file) === TRUE) {
$content = $zip->getFromName($document_xml);                            // Read contents into memory
$content = str_replace('propertyname', $hotel_name, $content);          // property name
$content = str_replace('address1', $street_1, $content);                // address 1
$content = str_replace('address1', $street_2, $content);                // address 2

$zip->addFromString($document_xml, $content);                           // replace content
$return = $zip->close();                                                // write changes to filesystem.
if ($return == TRUE) {
$result_arr[] = array('status' => 'success', 'response' => 'Format successfully merged', 'filename' => $created_at . '_' . $filename);
}
}
< /code>
Результат: заменяет некоторые переменные нерегулярно. Variable PropertyName 
заменяется только тогда, когда заполнитель является PropertyName , но не если Property_name . Переменная Адрес1 (значение: "StreetName 123") никогда не заменялась независимо от написания заполнителей, но переменная адрес 2 (значение: "какой -то район") заменяется все время. Машина LTS. Похоже, что нет согласованности проблемы замены, она возникает нерегулярно и заменяет некоторые переменные некоторое время. В противном случае я потратил слишком много времени на это и рад взглянуть на альтернативные пакеты, которые могут сделать.
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/714 ... ot-working
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»