【发布时间】:2013-03-05 10:07:10
【问题描述】:
我们正在基于相同的 codeigniter 代码库创建 2 个应用程序。这两个应用程序都使用基于语言的 XML 文件(我们不能使用本机 CI 语言库),因此每个应用程序的每种语言都有一个 XML 文件。
在这些 XML 文件中是文本,根据您正在查看的应用程序,输出时的格式会有所不同。 (我们使用简单的 XML 加载 XML,然后按名称输出所需的元素)
应用 1 的示例 XML 提取可能是:
<instructions>
<instruction>**<strong>**Lorem ipsum dolor sit**</strong>** amet, consectetur adipisicing elit, sed doeiusmod tempor incididunt ut labore et dolore magna aliqua</instruction>
</instructions>
示例应用 2 提取可能是:
<instructions>
<instruction>Lorem ipsum dolor sitamet, consectetur adipisicing elit, sed doeiusmod tempor incididunt ut labore et **<br /><br />**dolore magna aliqua</instruction>
</instructions>
基本上,这些 XML 文件在 PHP 中输出时需要包含不同的标记来格式化它们。上面的两个例子都会被回显为 $app->instructions->instruction。
目前我已经使用 CDATA 占位符实现了格式的变化,然后我 sprintf 并替换了这些占位符。但是,在我看来,这不够灵活,需要 sprintf 函数中的多个参数来替换可能是大量标记元素的内容。到目前为止,我最多需要替换 6 个 CDATA 令牌。
由于我还必须根据正在加载的应用程序使 sprintf 成为条件,这一事实使这一点更加复杂。更糟糕的是,我选择在控制器中执行此操作,以免不必要的 PHP 污染 HTML。
切入正题,我想实现以下目标:
- XML 没有 HTML 标记
- HTML 不使用 PHP,或至少尽量减少使用 PHP
- 控制器中绝对没有 HTML
无论我尝试如何工作,我似乎都在妥协其中之一。
【问题讨论】:
-
顺便说一句,你的具体编程问题是什么?
-
好吧,我想任何人都可以推荐一种分离逻辑的方法,同时在我上面解释的情况下保持可扩展性的灵活性。
标签: php xml codeigniter printf