我在我的网站上有重复的部分。
我正在尝试减少它们,
我的方法是有一次我将创建一个 html 模式(预定义为数组),通过这个模式我的函数会根据我的变量来理解用户需要什么样的输出并输出结果..
我的问题是我找不到完成情况的方法..
输入变量可能是(不定式)
$vals = array('Country Name' => 'USA', 'Country Name' => 'Canada', 'Country Name' => 'Mexico');
$vals = array('Country Name' => 'USA', 'Country Name' => 'Canada');
$vals = array('Country Name' => 'USA');
预期产出有序
<div class="lines">
<div><span>Country Name</span>USA</div>
<div><span>Country Name</span>Canada</div>
<div><span>Country Name</span>Mexico</div>
</div>
<div class="lines">
<div><span>Country Name</span>USA</div>
<div><span>Country Name</span>Canada</div>
</div>
<div class="lines">
<div><span>Country Name</span>USA</div>
</div>
Schema是完全适合html的变量
$schema = array(
array(
'tag' => 'div',
'class' => 'lines',
array(
'tag' => 'div',
array(
'tag' => 'span',
'key' => '$key'
),
'key' => '$key'
),
)
);
我的函数从此模式创建输出。(架构可能会根据用户需要进行扩展。)
function get_output($schema, $vals, $t = -1){
$t++;
$tag = "";
$atts = array();
$keys = array();
$code = array();
foreach($schema as $k => $v){
if(is_array($v)){
$keys[] = get_output($v, $vals, $t);
} else {
switch($k){
case "tag": $tag = $v; break;
case "key": break;
case "type": break;
default: $atts[$k] = $v; break;
}
}
}
if($tag){
$code[] = "<$tag";
foreach($atts as $k=>$v)
{
$code[] = ' '.$k.'="'.urlencode($v).'"';
}
$code[] = ">";
$code = array(implode('', $code));
}
foreach($keys as $k)
{
$code[] = $k;
}
if($tag){
$code[] = '</'.$tag.'>';
}
return implode("", $code);
}
在所有这些过程之后,我将只使用变量调用我的函数。模式预定义一次。
$vals = array('Country Name' => 'USA', 'Country Name' => 'Canada', 'Country Name' => 'Mexico');
echo get_output($schema, $vals, -1);
更新1
我当前的输出是以下 html 代码,我找不到推送变量的方法。哪些是国家名称/国家
<div class="lines">
<div><span></span></div>
<div><span></span></div>
</div>
UPDATE3 不同的模式方法
$schema = array(
'div' => array(
'class' => 'lines',
'div' => array(
'span' => array(
'key' => '$k[0]'
),
'key' => '$k[1]'
)
);