From 2c5fed61bd3427546b75d3bf00bd29f46b750bba Mon Sep 17 00:00:00 2001 From: Roman Syroeshko Date: Thu, 16 Jan 2014 04:19:41 -0800 Subject: [PATCH] https://github.com/PHPOffice/PHPWord/issues/52 Ability to limit number of replacements performed by setValue() method of Template class --- Classes/PHPWord/Template.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Classes/PHPWord/Template.php b/Classes/PHPWord/Template.php index a01a8541..464c51f3 100755 --- a/Classes/PHPWord/Template.php +++ b/Classes/PHPWord/Template.php @@ -81,8 +81,9 @@ class PHPWord_Template * * @param mixed $search * @param mixed $replace + * @param integer $limit */ - public function setValue($search, $replace) + public function setValue($search, $replace, $limit = -1) { $pattern = '|\$\{([^\}]+)\}|U'; preg_match_all($pattern, $this->_documentXML, $matches); @@ -102,7 +103,12 @@ class PHPWord_Template } } - $this->_documentXML = str_replace($search, $replace, $this->_documentXML); + $regExpDelim = '/'; + $escapedSearch = preg_quote($search, $regExpDelim); + $this->_documentXML = preg_replace("{$regExpDelim}{$escapedSearch}{$regExpDelim}u", + $replace, + $this->_documentXML, + $limit); } /** @@ -134,4 +140,4 @@ class PHPWord_Template rename($this->_tempFileName, $strFilename); } -} \ No newline at end of file +}