Хотите создать ul из некоторых значений, разделенных запятыми - PullRequest
0 голосов
/ 28 марта 2011

в настоящее время у меня есть некоторые значения, разделенные запятыми, такие как

"Апельсины, яблоки, пироги"

и я хочу превратить их в такой список

  • апельсины
  • яблоки
  • пирожки

надеюсь, что кто-нибудь может помочь мне здесь

Ответы [ 3 ]

8 голосов
/ 28 марта 2011
$data = "oranges, apples, pies";
$data = explode(',', $data);
echo '<ul>';
foreach ( $data as $item ) {
    echo '<li>', trim($item), '</li>';
}
echo '</ul>';

[sarcasm = on] Для тех, кто ищет не поддерживаемый, трудно читаемый код без сложных таких вещей, как массивы и циклическое их прохождение (Я знаю, что технически строка - это своего рода массив, хотя он отличается от того, что обычно подразумевается под массивами ):

$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);
2 голосов
/ 28 марта 2011
$slist = "oranges, apples, pies";
echo "<ul><li>" . str_replace(", ", "</li><li>", $slist) . "</li></ul>";  
1 голос
/ 28 марта 2011

Добавит только еще не упомянутые возможности:

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();
...