我有一个来自db的数组。数组具有由<br>
分隔的字符串。所以我想爆炸它们并将其转换为
<ul>
<li>...</li>
</ul>
使用函数的结构(listIt($list)
):
function listIt($list)
{
$list = mb_convert_case($list, MB_CASE_TITLE, 'UTF-8');
$text = explode('<br>', $list);
$menu = '<ul>';
foreach ($text as $li)
{
$menu .= '<li>' . $li . '</li>';
}
return $menu . '</ul>';
}
我的阵列(rawMenu
)如下:
array (size=5)
0 => string 'Banana<br>Cheese<br>Egg<br>Salad<br>Water<br>Juice<br>Coffee' (length=62)
1 => string 'Soup<br>Potato<br>Chicken<br>Fish<br>Juice<br>Wine<br>Salad' (length=61)
2 => string 'Banana<br>Cheese<br>Egg<br>Salad<br>Water<br>Juice<br>Coffee' (length=62)
3 => string 'Soup<br>Potato<br>Chicken<br>Fish<br>Juice<br>Wine<br>Salad' (length=61)
4 => string 'Banana<br>Cheese<br>Egg<br>Salad<br>Water<br>Juice<br>Coffee' (length=62)
问题是我传递给listIt($rawMenu[4])
函数的字符串返回:
<ul>
<li>Banana<br>Cheese<br>Egg<br>Salad<br>Water<br>Juice<br>Coffee</li>
</ul>
这是因为MB_CASE_TITLE
将第一个字母转换为大写(<Br>
),然后必须在Br
:上拆分
$st = 'Banana<br>Cheese<br>Egg<br>Salad<br>Water<br>Juice<br>Coffee';
$list = mb_convert_case($st, MB_CASE_TITLE, 'UTF-8');
$text = explode('<Br>', $list);
$menu = '<ul>';
foreach ($text as $li){
$menu .= '<li>' . $li . '</li>';
}
$menu .= '</ul>';
print_r($menu);
输出:
<ul><li>Banana</li><li>Cheese</li><li>Egg</li><li>Salad</li><li>Water</li><li>Juice</li><li>Coffee</li></ul>
这里是沙箱中的工作示例。
正如@LightnessRacesinOrbit在评论中所指出的,良好的做法是交换爆炸和转换:
$st = 'Banana<br>Cheese<br>Egg<br>Salad<br>Water<br>Juice<br>Coffee';
$text = explode('<br>', $st);
$menu = '<ul>';
foreach ($text as $li){
$menu .= '<li>' . $li . '</li>';
}
$menu .= '</ul>';
$menu = mb_convert_case($menu, MB_CASE_TITLE, 'UTF-8');
print_r($menu);