2

我们正在基于相同的 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

似乎我正在以我尝试的方式妥协其中之一。

4

1 回答 1

0

你的问题是边缘回答它,但我还是尝试。你提出了三个要求:

  1. XML 没有 HTML 标记
  2. HTML 不使用 PHP,或者至少尽量减少使用 PHP
  3. 控制器内绝对没有 HTML

要使 XML 远离 HTML 标记,请不要在其中放置任何 HTML 标记。或者,如果您想在其中包含 HTML,请对其进行正确编码。与 CDATA 或只是 XML 实体一样:

<instructions>
  <instruction>
    &lt;strong&gt;Lorem ipsum dolor sit&lt;/strong&gt; amet, consectetur 
    adipisicing elit, sed doeiusmod tempor incididunt ut labore et dolore magna
    aliqua
  </instruction>
</instructions>

XML 对此完全没有问题,您也应该没有任何问题来获取该值。所以对于 1.)。

对于 2.) 我不明白你的意思。如果你想保持 PHP 的清晰,不要在里面放任何 PHP。如果您将 PHP 放入其中,您需要了解您也需要对其进行编码(如 HTML),否则您将创建所谓的处理指令 (pi),这本身可能没有任何问题,但是在获取数据时您可能遇到问题。但无论如何,由于这些翻译是静态数据,所以无论如何您都不应该在其中放置任何 PHP。

处理该静态数据的逻辑很可能属于视图和/或控制器。

对于 3.) 只是不要将任何 HTML 放入控制器中,您应该可以继续使用(将其放入 Codeigniter 人员所称的视图中,即 Codeigniter 中 HTML 模板的组件)。

于 2013-03-05T13:24:26.283 回答