项目中用到的实际是deleteBlock方法,但也是要调用replaceBlock
使用中生成的word文件是损坏的,不知道什么原因
但是用了一下cloneBlock的功能,发现是正常的
对比了一下cloneBlock和replaceBlock的正则表达式
replaceBlock方法的正则表达式
preg_match(
'/(<\?xml.*)(<w:p.*>\${' . $blockname . '}<\/w:.*?p>)(.*)(<w:p.*\${\/' . $blockname . '}<\/w:.*?p>)/is',
$this->tempDocumentMainPart,
$matches
);
cloneBlock方法的正则表达式
preg_match(
'/(<\?xml.*)(<w:p\b.*>\${' . $blockname . '}<\/w:.*?p>)(.*)(<w:p\b.*\${\/' . $blockname . '}<\/w:.*?p>)/is',
$this->tempDocumentMainPart,
$matches
);
一个是<w:p 一个是<w:p\b
将replaceBlock修改成<w:p\b之后生成的word可以打开,但是看不见替换的内容,而实际上xml文档里确实被替换了,貌似因为缺少标签导致在word中无法显示
不管怎样,目的是达到了。。。如果想实现替换的功能,暂时想到的办法时建立多个block 然后用setValue设置块里面的内容,最后把不需要的块delete