【问题标题】:include a line break in a value在值中包含换行符
【发布时间】:2019-10-30 09:18:21
【问题描述】:

我有一个 word 模板,其中有 php 代码中定义的值: 在php代码中:

$document->setValue('Value1', $value1);

在word模板中:

${Value1}

如何包含一个包含两个值之间的断线的值以包含在单词的值中?

【问题讨论】:

    标签: php phpword


    【解决方案1】:

    你不能。

    这是因为您既没有像建议 nl2br() 的人们所想的那样生成 HTML,也没有生成 ASCII 文本,而 \n 可能会帮助您。

    您正在编写 PHPWord 模板

    所以你的“换行符”实际上是添加一个段落,这比简单地插入一个<br>标签要复杂得多。

    文档states clearly,你想要的东西是不可能的:

    您可以创建一个包含搜索模式(宏)的 OOXML 文档模板,该模板可以替换为您希望的任何值。 只能替换单行值

    那你是做什么的?

    您也许可以更改模板,使其具有由换行符分隔的两个值(因此实际上您在一个段落中有一个值,在另一个段落中有一个值)。然后,分别设置这两个值。如果您不希望它显示,请将其留空(它仍然是一个空段落)。

    或者您可以使用一个可重复的块并再次在两个子块中添加这两个值。或者准备两个子块,如果不需要,删除一个。看到这个效果sample 23

    一般来说,PHPWord 模板仅适用于非常简单的文档(即,彼此之间仅略有不同的文档组:例如群发邮件,其中只有名称和地址发生变化)。对于更复杂的操作,您需要使用完整的 PHPWord API,在这种情况下,发出两个 addText() 调用,或者只发出一个调用,具体取决于换行符是否存在。

    【讨论】:

      【解决方案2】:

      \n 替换为</w:t><w:br/><w:t>

      $value1 = str_replace("\n", '</w:t><w:br/><w:t>', $value1);
      $document->setValue('Value1', $value1);
      

      取自https://github.com/PHPOffice/PHPWord/issues/838

      【讨论】:

        【解决方案3】:

        在字符串中,换行符由“/n”表示,但我不确定这是否是您要搜索的内容。

        blabla = "hello /n whats up"
        print(blabla)
        //output : hello
        //whats up
        

        【讨论】:

        • 你的意思是\n,而不是/n
        【解决方案4】:

        我上面的答案不正确

        您可以在 php 值中使用 HTML 标记,以便将&lt;br&gt; 用于换行

        <?php
        
        $comment = "hello <br> whats up";
        echo $comment;
        
        ?>
        
        

        将输出:

        hello
        whats up
        

        【讨论】:

        • 此处回答更改顺序。请编辑并指定究竟是哪个答案不正确以及为什么。谢谢
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-06-28
        • 2018-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多