将管道分隔值数组打印为 HTML 列表项标签

问题描述 投票:0回答:4

数据来自Wordpress Metabox,以单个长数组的形式。

我在元框中插入的数据如下所示:

Rhine Riesling1|0,75 l|9,50 &euro

Rhine Riesling2|0,75 l|9,50 &euro

Rhine Riesling3|0,75 l|9,50 &euro

Rhine Riesling4|0,75 l|9,50 &euro

最终输出应如下所示:

<ul class="listmenuitems" id="listingmenu_1">
    <li><p>Rhine Riesling1 <span>0,75 l</span></p> <span class="listmenuprice">9,50 &euro;</span></li>
    <li><p>Rhine Riesling2 <span>0,75 l</span></p> <span class="listmenuprice">9,50 &euro;</span></li>
    <li><p>Rhine Riesling3 <span>0,75 l</span></p> <span class="listmenuprice">9,50 &euro;</span></li>
    <li><p>Rhine Riesling4 <span>0,75 l</span></p> <span class="listmenuprice">9,50 &euro;</span></li>
</ul>

考虑分隔符

|
,我如何将数组值切成碎片,然后循环遍历它以创建格式正确的
<li><p>

我现在正在阅读有关 PHP 的

explode()

php arrays explode text-extraction delimited
4个回答
3
投票
list($name,$content,$price) = explode("|",$line) 
printf('<li><p>%s<span>%s</span></p> <span class="listmenuprice">%s</span></li>',$name,$content,$price)

0
投票

您可以使用 PHP 爆炸命令。 http://php.net/manual/en/function.explode.php

循环遍历数组,在每个条目上调用:explode("|", $entry); 然后你可以像这样打印出你想要的内容:

$input_arr[];
echo '<ul class="listmenuitems" id="listingmenu_1">';
for($i=0;i<sizeof($input_arr);$i++) {

    $e = explode("|",$input_arr[$i]);
    echo "<li><p>" . $e[0] . "<span>" . $e[1] . "</span></p> <span class=\"listmenuprice\">" . $e[2] . "</span></li>";

}

请注意,存在错误检查,并且假设您有一个完整且格式良好的数组输入。

更新添加 foreach ;) 如果您喜欢 foreach 循环...

$input_arr[];
echo '<ul class="listmenuitems" id="listingmenu_1">';
foreach($input_arr as $i) {

    $e = explode("|",$i);
    echo "<li><p>" . $e[0] . "<span>" . $e[1] . "</span></p> <span class=\"listmenuprice\">" . $e[2] . "</span></li>";

}

0
投票

使用

vprintf()
将允许您干净地声明 HTML 模板字符串并立即使用从
explode()
返回的数组。

代码:(演示

$array = [
    'Rhine Riesling1|0,75 l|9,50 &euro',
    'Rhine Riesling2|0,75 l|9,50 &euro',
    'Rhine Riesling3|0,75 l|9,50 &euro',
    'Rhine Riesling4|0,75 l|9,50 &euro',
];

echo '<ul class="listmenuitems" id="listingmenu_1">' . "\n";
    foreach ($array as $psv) { // pipe-separated values
        vprintf(
            "\t" . '<li><p>%s <span>%s</span></p> <span class="listmenuprice">%s;</span></li>' . "\n",
            explode('|', $psv)
        );
    }
echo '</ul>';

输出:

<ul class="listmenuitems" id="listingmenu_1">
    <li><p>Rhine Riesling1 <span>0,75 l</span></p> <span class="listmenuprice">9,50 &euro;</span></li>
    <li><p>Rhine Riesling2 <span>0,75 l</span></p> <span class="listmenuprice">9,50 &euro;</span></li>
    <li><p>Rhine Riesling3 <span>0,75 l</span></p> <span class="listmenuprice">9,50 &euro;</span></li>
    <li><p>Rhine Riesling4 <span>0,75 l</span></p> <span class="listmenuprice">9,50 &euro;</span></li>
</ul>

-1
投票

假设你的数组是

$metabox;

然后

echo '<ul class="listmenuitems" id="listingmenu_1">';
foreach($metabox as $val)
{
$petabox=explode("|",$val);
echo '<li><p>'.$petabox[0].'<span>'.$petabox[1].'</span></p> <span class="listmenuprice">'.$petabox[2].'</span></li>';
}
echo '</ul>';
© www.soinside.com 2019 - 2024. All rights reserved.