PhpWord的replaceBlock无效的问题

项目中用到的实际是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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值