-2

我必须用 PHP 编写时事通讯运输中心。数据库架构(我无法更改)是这样构建的:

Table: <customer_prefix>_data: 包含 XML 字符串形式的数据(包括客户姓名、电子邮件地址等数据)和 tpl-Table 的链接。每行包含一封客户电子邮件,以及可以在新闻通讯之间更改的更多内容

表: <customer_prefix>_tpl: 包含所有带有 {$var}-Variables 的时事通讯(HTML),这些变量应该代表 XML 节点(以及它们的数据,所以<node>value</node>应该变成 {$node} 并且这个变量应该保存“值”)。加上 XSD Schema,应该用它来验证 XML-Strings(我得到了那个工作)。

问题是,XML 字符串可能因时事通讯而异,而且一切都必须动态发生(因为我必须编写一个 Cronjob 来收集所有数据、呈现邮件内容然后发送它)。我被告知要使用 Smarty,但我不知道如何(动态)将 XML 节点转换为 Smarty 变量...

如果有比使用 Smarty 更好的方法(str_replace 不是一个选项),我全神贯注......

我希望你能解决我的问题......如果你需要任何进一步的信息,我很乐意提供。

4

1 回答 1

1

我是这样想的:

<?php 

// foreach loop is started here to count through a number of database entries
// that explains the $i. Just adjust that to your needs

// Get DOMDocument here and validate with XSD Schema

// ...

// Get XML Elements and assign them to Smarty variables
$elements[$key][$i] = $dom->documentElement;
foreach ($elements[$key] as $element) {
  foreach ($element->childNodes as $el) {
    $tpl->assign($el->nodeName, $el->nodeValue);
    $params[$el->nodeName] = $el->nodeValue;
  }
}

?>

这就是它对我有用的方式

于 2013-07-08T06:31:01.823 回答