【问题标题】:generate Word document with dynamic variables using Laravel使用 Laravel 生成带有动态变量的 Word 文档
【发布时间】:2023-03-31 12:37:01
【问题描述】:

这是我第一次尝试用 Laravel 生成 Word 文档。

我有一些我应该在 Word 文档中生成的数据库列。

例如我有以下数据库:

例如,我应该生成一个包含 hello John 的文档文件

所以'<<>>' 中的所有元素都是dynamic 变量。

如何从数据库中获取前导列的值并同时设置变量名?

我发现存在一个名为 phpwordn 的包,但我发现我应该有一个模板,它是一个带有动态变量 n 的 word 文件,但在我的情况下,我没有模板,我的 Word 文件的所有组件都在数据库中。

有可能吗?

如果您有任何想法或示例可以帮助我。

【问题讨论】:

    标签: laravel phpword


    【解决方案1】:

    您可以使用preg_replace_callback() 将所有特殊的标签 转换为其对应的值。在您的情况下,tag 的形式为 <<foo>>,因此如下:

    $values = [
        'me' => 'user14053977',
        'saviour' => 'RoboRobok',
    ];
    
    $template = 'My name is <<me>> and <<saviour>> saved me!';
    
    $result = preg_replace_callback(
        '#<<(\w+)>>#',
        function (array $matches) use ($values): string {
            [$tag, $tagName] = $matches;
            return $values[$tagName] ?? $tag;
        },
        $template
    );
    
    // $result is now "My name is user14053977 and RoboRobok saved me!"
    

    这是一个纯 PHP 代码。现在只需使用 Laravel 中的值并将$result 注入到您的 Word 文档中即可。

    【讨论】:

    • 感谢您的回答,但我没有模板,模板我也必须从数据库中获取,例如“我的名字是”也是数据库中的列的值,我应该从数据库中获取并放入一个word文档
    • 是的,我知道,但有什么问题?您也在问如何从数据库中检索这些值?
    • 是的,如何使用来自数据库列的值以及从数据库中提取的值生成文档单词我还有一个动态变量
    • 我很清楚stackoverflow是什么意思,谢谢
    猜你喜欢
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 2015-01-17
    • 2019-12-28
    • 2017-01-26
    相关资源
    最近更新 更多