Overview

Packages

  • PHP
  • PHPWord

Classes

  • PHPWord
  • PHPWord_Autoloader
  • PHPWord_DocumentProperties
  • PHPWord_HashTable
  • PHPWord_IOFactory
  • PHPWord_Media
  • PHPWord_Section
  • PHPWord_Section_Footer
  • PHPWord_Section_Footer_PreserveText
  • PHPWord_Section_Header
  • PHPWord_Section_Image
  • PHPWord_Section_Link
  • PHPWord_Section_ListItem
  • PHPWord_Section_MemoryImage
  • PHPWord_Section_Object
  • PHPWord_Section_PageBreak
  • PHPWord_Section_Settings
  • PHPWord_Section_Table
  • PHPWord_Section_Table_Cell
  • PHPWord_Section_Table_Row
  • PHPWord_Section_Text
  • PHPWord_Section_TextBreak
  • PHPWord_Section_TextRun
  • PHPWord_Section_Title
  • PHPWord_Shared_Drawing
  • PHPWord_Shared_File
  • PHPWord_Shared_Font
  • PHPWord_Shared_String
  • PHPWord_Shared_XMLWriter
  • PHPWord_Shared_ZipStreamWrapper
  • PHPWord_Style
  • PHPWord_Style_Cell
  • PHPWord_Style_Font
  • PHPWord_Style_Image
  • PHPWord_Style_ListItem
  • PHPWord_Style_Paragraph
  • PHPWord_Style_Row
  • PHPWord_Style_Tab
  • PHPWord_Style_Table
  • PHPWord_Style_TableFull
  • PHPWord_Style_Tabs
  • PHPWord_Style_TOC
  • PHPWord_Template
  • PHPWord_TOC
  • PHPWord_Writer_ODText
  • PHPWord_Writer_ODText_Content
  • PHPWord_Writer_ODText_Manifest
  • PHPWord_Writer_ODText_Meta
  • PHPWord_Writer_ODText_Mimetype
  • PHPWord_Writer_ODText_Styles
  • PHPWord_Writer_ODText_WriterPart
  • PHPWord_Writer_RTF
  • PHPWord_Writer_Word2007
  • PHPWord_Writer_Word2007_Base
  • PHPWord_Writer_Word2007_ContentTypes
  • PHPWord_Writer_Word2007_DocProps
  • PHPWord_Writer_Word2007_Document
  • PHPWord_Writer_Word2007_DocumentRels
  • PHPWord_Writer_Word2007_Footer
  • PHPWord_Writer_Word2007_Header
  • PHPWord_Writer_Word2007_Rels
  • PHPWord_Writer_Word2007_Styles
  • PHPWord_Writer_Word2007_WriterPart

Interfaces

  • PHPWord_Writer_IWriter

Exceptions

  • PHPWord_Exception
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * PHPWord
  4:  *
  5:  * Copyright (c) 2013 PHPWord
  6:  *
  7:  * This library is free software; you can redistribute it and/or
  8:  * modify it under the terms of the GNU Lesser General Public
  9:  * License as published by the Free Software Foundation; either
 10:  * version 2.1 of the License, or (at your option) any later version.
 11:  *
 12:  * This library is distributed in the hope that it will be useful,
 13:  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 14:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 15:  * Lesser General Public License for more details.
 16:  *
 17:  * You should have received a copy of the GNU Lesser General Public
 18:  * License along with this library; if not, write to the Free Software
 19:  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 20:  *
 21:  * @category   PHPWord
 22:  * @package    PHPWord
 23:  * @copyright  Copyright (c) 2013 PHPWord
 24:  * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL
 25:  * @version    0.7.0
 26:  */
 27: 
 28: /**
 29:  * PHPWord_DocumentProperties
 30:  */
 31: class PHPWord_Template
 32: {
 33: 
 34:     /**
 35:      * ZipArchive
 36:      *
 37:      * @var ZipArchive
 38:      */
 39:     private $_objZip;
 40: 
 41:     /**
 42:      * Temporary Filename
 43:      *
 44:      * @var string
 45:      */
 46:     private $_tempFileName;
 47: 
 48:     /**
 49:      * Document XML
 50:      *
 51:      * @var string
 52:      */
 53:     private $_documentXML;
 54: 
 55: 
 56:     /**
 57:      * Create a new Template Object
 58:      *
 59:      * @param string $strFilename
 60:      */
 61:     public function __construct($strFilename)
 62:     {
 63:         $this->_tempFileName = tempnam(sys_get_temp_dir(), '');
 64:         if ($this->_tempFileName !== false) {
 65:             // Copy the source File to the temp File
 66:             if (!copy($strFilename, $this->_tempFileName)) {
 67:                 throw new PHPWord_Exception('Could not copy the template from ' . $strFilename . ' to ' . $this->_tempFileName . '.');
 68:             }
 69: 
 70:             $this->_objZip = new ZipArchive();
 71:             $this->_objZip->open($this->_tempFileName);
 72: 
 73:             $this->_documentXML = $this->_objZip->getFromName('word/document.xml');
 74:         } else {
 75:             throw new PHPWord_Exception('Could not create temporary file with unique name in the default temporary directory.');
 76:         }
 77:     }
 78: 
 79:     /**
 80:      * Set a Template value
 81:      *
 82:      * @param mixed $search
 83:      * @param mixed $replace
 84:      */
 85:     public function setValue($search, $replace)
 86:     {
 87:         $pattern = '|\$\{([^\}]+)\}|U';
 88:         preg_match_all($pattern, $this->_documentXML, $matches);
 89:         foreach ($matches[0] as $value) {
 90:             $valueCleaned = preg_replace('/<[^>]+>/', '', $value);
 91:             $valueCleaned = preg_replace('/<\/[^>]+>/', '', $valueCleaned);
 92:             $this->_documentXML = str_replace($value, $valueCleaned, $this->_documentXML);
 93:         }
 94: 
 95:         if (substr($search, 0, 2) !== '${' && substr($search, -1) !== '}') {
 96:             $search = '${' . $search . '}';
 97:         }
 98: 
 99:         if (!is_array($replace)) {
100:             if (!PHPWord_Shared_String::IsUTF8($replace)) {
101:                 $replace = utf8_encode($replace);
102:             }
103:         }
104: 
105:         $this->_documentXML = str_replace($search, $replace, $this->_documentXML);
106:     }
107: 
108:     /**
109:      * Returns array of all variables in template
110:      */
111:     public function getVariables()
112:     {
113:         preg_match_all('/\$\{(.*?)}/i', $this->_documentXML, $matches);
114:         return $matches[1];
115:     }
116: 
117:     /**
118:      * Save Template
119:      *
120:      * @param string $strFilename
121:      */
122:     public function save($strFilename)
123:     {
124:         if (file_exists($strFilename)) {
125:             unlink($strFilename);
126:         }
127: 
128:         $this->_objZip->addFromString('word/document.xml', $this->_documentXML);
129: 
130:         // Close zip file
131:         if ($this->_objZip->close() === false) {
132:             throw new Exception('Could not close zip file.');
133:         }
134: 
135:         rename($this->_tempFileName, $strFilename);
136:     }
137: }
PHPWord API Docs API documentation generated by ApiGen 2.8.0