条件sprintf codeigniter php

条件sprintf codeigniter php,php,xml,codeigniter,printf,Php,Xml,Codeigniter,Printf,我们正在基于相同的codeigniter代码库创建2个应用程序。这两个应用程序都使用基于语言的XML文件(我们不能使用本机CI语言库),因此每个应用程序每种语言有一个XML文件 在这些XML文件中包含文本,根据您正在查看的应用程序,这些文本在输出时的格式不同。(我们用简单的XML加载XML,然后按名称输出所需的元素) 应用程序1的XML提取示例可能是: <instructions> <instruction>**<strong>**Lorem ipsu

我们正在基于相同的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>
<instructions>
    <instruction>Lorem ipsum dolor sitamet, consectetur adipisicing elit, sed doeiusmod tempor incididunt ut labore et **<br /><br />**dolore magna aliqua</instruction>
</instructions>

****Lorem ipsum dolor sit****amet,一位杰出的献身者,他是一位临时劳工和职业经理人
示例app 2摘录可能是:

<instructions>
    <instruction>**<strong>**Lorem ipsum dolor sit**</strong>** amet, consectetur adipisicing elit, sed doeiusmod tempor incididunt ut labore et dolore magna aliqua</instruction>
</instructions>
<instructions>
    <instruction>Lorem ipsum dolor sitamet, consectetur adipisicing elit, sed doeiusmod tempor incididunt ut labore et **<br /><br />**dolore magna aliqua</instruction>
</instructions>

Lorem ipsum dolor sitamet,一位杰出的献身者,他在劳动和社会方面的临时贡献**

**
基本上,这些XML文件需要包含不同的标记,以便在PHP中输出时对其进行格式化。上面的两个示例都将作为$app->instructions->instruction进行回显

目前,我已经通过使用CDATA占位符实现了这一点,然后我使用sprintf替换了CDATA占位符。但是,我认为这不够灵活,需要在sprintf函数中使用多个参数来替换可能大量的标记元素。到目前为止,我需要更换的最多是6个CDATA令牌

更重要的是,我还必须根据正在加载的应用程序设置sprintf的条件。更糟糕的是,我选择在控制器中这样做,这样就不会用不必要的PHP污染HTML

我希望实现以下目标:

  • XML远离HTML标记
  • HTML远离PHP,或至少尽量减少PHP的使用
  • 控制器中绝对没有HTML

我似乎在折衷其中一个问题,无论我如何尝试解决它。

你的问题几乎无法回答,但我还是尝试了。你制定了三个要求:

  • XML远离HTML标记
  • HTML远离PHP,或至少尽量减少PHP的使用
  • 控制器中绝对没有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>
    
    
    strongLorem ipsum dolor sit/strong amet,CONSECTETTUR
    作为一名精英,我们暂时不需要劳动和金钱
    阿利夸
    
    XML在这方面没有任何问题,您也不应该在获取该值方面有任何问题。因此,对于1。)

    我不明白你的意思。如果您想清除PHP,请不要将任何PHP放入其中。如果你把PHP放在里面,你需要明白你也需要对它进行编码(就像HTML),否则你会创建所谓的处理指令(pi),这本身可能不会有任何问题,但是在获取数据时你可能会遇到问题。但无论如何,因为这些翻译是静态数据,所以无论如何都不应该在其中放入任何PHP

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


    对于3.)只需不要在控制器中放入任何HTML,您就可以了(将其放入Codeigniter人员称之为视图的位置,这是Codeigniter中HTML模板的组件)。

    顺便问一下,您具体的编程问题是什么?嗯,我想任何人都可以推荐一种分离逻辑的方法,同时考虑到我上面解释的场景,在扩展性上保持灵活性。Hakre-谢谢你的回复。我遇到的问题主要是关于MVC框架中代码的可扩展性和分离性。XML不应包含任何格式标记,类似于控制器。CI视图应包含尽可能少的逻辑。所以我想做的是找到一种方法,在尽可能可扩展的同时,将逻辑从函数中分离出来。我使用sprintf的5个或6个替换参数让人感觉……肮脏。我建议你不要把它放在那里。我已经想知道你为什么这么做。只要将HTML和PHP排除在翻译文件之外,就可以了。