2011-03-28 28 views

回答

7
$data = "oranges, apples, pies"; 
$data = explode(',', $data); 
echo '<ul>'; 
foreach ($data as $item) { 
    echo '<li>', trim($item), '</li>'; 
} 
echo '</ul>'; 

[嘲諷=上] 對於那些誰沒有複雜東西一樣陣列尋找難以維護,難以閱讀的代碼,並通過他們的循環(是的,我知道,串在技術上是一個類型的數組,雖然它是從什麼通常與陣列意味着不同):

$input = 'oranges, apples, pies'; 
$output = ''; 

$output = '<ul><li>'; 
$inputLength = strlen($input); 
$skipSpaces = true; 
for ($n = 0; $n < $inputLength; ++$n) { 
    if ($skipSpaces) { 
     if ($input[$n] === ' ') { 
      continue; 
     } 
     $skipSpaces = false; 
    } 
    if ($input[$n] === ',') { 
     $skipSpaces = true; 
     $output .= '</li><li>'; 
     continue; 
    } 
    $output .= $input[$n]; 
} 
$output .= '</li></ul>'; 

var_dump($output); 
+0

謝謝!這適用於開箱即用; P – Alex 2011-03-28 14:18:10

+0

您可以保存循環:'echo「

  • 」; echo implode(「
  • 」,explode(',',$ data));回聲「
  • 」;' – 2011-03-28 14:58:25

    +1

    或..赫克,來想一想,跳過內爆/爆炸的步驟,只是一個'回聲str_replace(',','

  • ',$ data)' – 2011-03-28 14:59:22

  • 2
    $slist = "oranges, apples, pies"; 
    echo "<ul><li>" . str_replace(", ", "</li><li>", $slist) . "</li></ul>"; 
    
    +0

    對不起,我的壞...逗號+空格應該換成它。 – Wh1T3h4Ck5 2011-03-28 13:58:07

    1

    只會增加無沒有提到可能:

    printf(
        '<ul><li>%s</li></ul>', 
        implode(
         '</li><li>', 
         str_getcsv("oranges, apples, pies") 
        ) 
    ); 
    

    雖然str_getcsv是有點矯枉過正,如果你沒有多行和封閉字符之類的東西。那麼只需使用explode即可。

    另一種可能性:

    echo '<ul>'; 
    $tok = strtok("oranges, apples, pies", ','); 
    while ($tok !== false) { 
        echo '<li>', trim($tok), '</li>'; 
        $tok = strtok(','); 
    } 
    echo '</ul>'; 
    

    而另一個問題:

    $dom = new DOMDocument; 
    $dom->appendChild(
        $dom->createElement('ul') 
    ); 
    foreach(explode(',', 'oranges, apples, pies') as $fruit) { 
        $dom->documentElement->appendChild(
         $dom->createElement('li', $fruit) 
        ); 
    } 
    $dom->formatOutput = TRUE; 
    echo $dom->saveXml($dom->documentElement); 
    

    而且最後一個:

    $writer = new XMLWriter(); 
    $writer->openURI('php://output'); 
    $writer->startElement('ul'); 
    foreach(explode(',', 'oranges, apples, pies') as $fruit) { 
        $writer->writeElement('li', $fruit); 
    } 
    $writer->endElement();