我有一个来自数据库的数组。数组包含由 <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>
沙箱中的工作示例 here .
正如 @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);
关于php - 如何将 <bars 转换为 (PHP 中的无序列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25611904/