我发现自己经常重复HTML代码来格式化项目,例如列表,表格和其他重复保存格式的区域(即:员工照片)。我知道必须有一些方法来简化使用重复格式化的部分的HTML输出,但我不确定数组是否适用或者是否有更好的方法我还没有发现。
例如,我最近开发了Macon Mall的商店列表目录。这是代码的一部分:
<ul>
<li>Belk<br /><span class="both">Upper & Lower Level</span><br />(478) 477-2355</li>
<li>JCPenney<br /><span class="both">Upper & Lower Level</span><br />(478) 477-8400</li>
<li>Macy's<br /><span class="both">Upper & Lower Level</span><br />(478) 471-3847</li>
<li>Sears<br /><span class="both">Upper & Lower Level</span><br />(478) 471-5555</li>
</ul>
如何利用PHP的强大功能简化输入过程?
我希望我已经清楚了。如果没有,请随时提问。谢谢你的帮助,全部!
答案 0 :(得分:2)
<?php
$stores = array(
array(
'name' => 'Belk',
'level' => 'Upper & Lower Level',
'number' => '(478) 477-2355'
),
array(
'name' => 'JCPenney',
'level' => 'Upper & Lower Level',
'number' => '(478) 477-8400'
),
array(
'name' => 'Macy\'s',
'level' => 'Upper & Lower Level',
'number' => '(478) 471-3847'
),
array(
'name' => 'Sears',
'level' => 'Upper & Lower Level',
'number' => '(478) 471-5555'
)
);
?>
<ul>
<?php foreach( $stores as $store): ?>
<li><?= $store['name']?><br /><span class="both"><?= htmlspecialchars( $store['level']) ?></span><br /><?= $store['number']?></li>
<?php endforeach; ?>
</ul>
答案 1 :(得分:0)
听起来你在限制范围内正在尽你所能。 CMS可能需要探索。
答案 2 :(得分:0)
如果你想冒险尝试新的东西,我建议尝试PHP的闭包功能。您将从示例中看到,您可以轻松地从代码中完全删除HTML。我打算围绕这个(表格等)开发一个库,但核心概念非常简单。从这个功能开始(不要担心它现在如何工作):
function h($code , $id="", $class=""){
if ($id !== "") $id = " id = \"$id\"" ;
$class = ($class !== "")? " class =\"$class\"":"";
$open = "<$code$id$class>";
$cls = trim(substr($code,0,strpos($code.' ',' ')));
$close = "</$cls>";
return function ($inner = "") use ($open, $close){
return "\n$open\n$inner\n$close\n";};
}
现在这段代码:
//Create two simple tags (Why not an entire page layout!)
$tags = array('ul','li');
foreach ($tags as $element)
$$element = h( $element);
//Create the span tag with its class...
$span=h("span", "", "both");
//Creating an optional div with an id
$div = h("div", "test");
//Constant linebreak
$br = "<br />";
//more optional tags
$bold = h('strong');
$italic = h('i');
//现在这是你的&#34;关闭&#34; HTML!
echo $ul(
$li("belk".$br.$span("Upper & Lower Level").$br."(478) 477-2355").
$li("JCPenney".$br.$span("Upper & Lower Level").$br."(478) 477-2355").
$li("Macys".$br.$span("Upper & Lower Level").$br."(478) 477-2355").
$li("Sears".$br.$span("Upper & Lower Level").$br."(478) 477-2355")
);
首先,您注意到没有结束标签!这是因为封闭功能像发髻一样,用两半关闭你的汉堡!注意闭包函数
H()
返回一个函数!闭包获取环境的快照(在这种情况下是带有属性的开始和结束标记),当它再次被调用时,它会记住将它们放在正确的位置。
谁说我们可以到此为止!你可以嵌套你想要的所有HTML,一切都正确!使用这种技术,您永远不必使用原始HTML来弄脏您的视图。没有什么能阻止你创建接收数组的函数并直接在每个元素周围映射HTML。