docx模板处理器插入图像

时间:2013-12-10 08:05:01

标签: php xml regex templates

我在PHP上编写了自己的docx模板处理器。  我使用docx文件作为存档,并在存档的word目录中更改document.xml文件。一切都很好,直到我插入图像。在word文件中,我写这样的模板:

{(SOME_TEMPLATE)} 

并在XML文件中看起来像:

some xml tags ... {(SOME_TEMPLATE)} ... some xml tags

但是当我在模板后插入图像时,它看起来像:

some tags ... { some tags ...(SOME_TEMPLATE)} ". <br /> 

图片会破坏我的模板我的XML标签。我尝试使用str_replace()函数替换模板,但是通过这样的正则表达式替换它是一个很好的变体吗?

  1. 首先我们正在搜索{
  2. 然后我们忽略所有符号,直到找到(
  3. 然后我们会忽略所有内容,直到找到关键字SOME_TEMPLATE
  4. 然后重复步骤2直到)
  5. 然后重复直至}

2 个答案:

答案 0 :(得分:2)

这个与函数preg_replace一起使用的正则表达式可以解决这个问题:

\{[^(]*\(.*SOME_TEMPLATE.*\)[^\}]*\}

但我不确定这是解决问题的一种非常“干净”的方式。

答案 1 :(得分:0)

如果有人遇到这个问题,我找到了编写正则表达式的解决方案,忽略了标签和空格:

{(</?[^(a-zA-Z)]\b[^>]>|\s)*(\1*SOME_TAG\1*)\1*}