2014-09-01 7 views
2

我有一個來自數據庫的數組。數組有由<br>分隔的字符串。所以我想爆炸它們,使用功能(listIt($list))將其轉換爲如何在PHP中將<br>的轉換爲(un)有序列表?

<ul> 
    <li>...</li> 
</ul> 

結構:

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> 

回答

5

這是因爲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); 
+0

呃我反而交換爆炸和大小寫轉換周圍。 – 2014-09-01 19:34:07

+0

@LightnessRacesinOrbit是的,我實際上也是。 – 2014-09-01 19:34:31

+0

這麼簡單嗎?我的天啊!!! – zkanoca 2014-09-01 19:35:22

相關問題