条件sprintf codeigniter php
我们正在基于相同的codeigniter代码库创建2个应用程序。这两个应用程序都使用基于语言的XML文件(我们不能使用本机CI语言库),因此每个应用程序每种语言有一个XML文件 在这些XML文件中包含文本,根据您正在查看的应用程序,这些文本在输出时的格式不同。(我们用简单的XML加载XML,然后按名称输出所需的元素) 应用程序1的XML提取示例可能是:条件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
<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
我似乎在折衷其中一个问题,无论我如何尝试解决它。你的问题几乎无法回答,但我还是尝试了。你制定了三个要求:
<instructions>
<instruction>
<strong>Lorem ipsum dolor sit</strong> 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排除在翻译文件之外,就可以了。