2013-12-10 40 views
0

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

{(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

This正则表达式与功能preg_replace使用应该做的伎俩:

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

但我不知道这是一个非常“干净”的方式来解决问题。

+0

谢谢你的回答,但我发现更清洁的解决方案忽略所有的标签和空格。 –

0

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

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