2009-11-04 3 views
1

Je préfère jquery.Comment créer une liste Ul à partir d'une chaîne?

Disons que j'ai une chaîne avec,

adam, lisa, john, sarah

et je veux les transformer en:

<ul><li>Adam</li><li>lisa</li><li>john</li><li>sarah</li></ul>

+0

veuillez clarifier la question, vous voulez cette sortie à la page? est-ce que jQuery gère cette chaîne? Ou est-ce que PHP le fait? – Jakub

Répondre

5
"<ul><li>" + "adam, lisa, john, sarah".split(", ").join("</li><li>") + "</li></ul>" 

[Modifier :] J'ai supposé javascript depuis que vous avez mentionné jQuery. Je ne connais pas la meilleure façon de le faire en PHP, mais vous faites la même chose que ci-dessus en utilisant preg_split et implode en PHP.

+0

comment l'implémenter dans un fichier html/php? – neotorama

2

En utilisant la fonction de jQuery $.map:

var names = 'adam,lisa,john,sarah'; 
var html = '<ul>'+$.map(names.split(','), function(name){ 
    return '<li>'+name+'</li>' 
}).join('')+'</ul>'; 
+0

merci beaucoup – neotorama

0

Pour le faire en PHP, exploser la chaîne pour en faire un tableau, puis utiliser array_map pour convertir chaque élément à une balise li. Une fois cela fait imploser pour obtenir le résultat souhaité:

$items = explode(",", "adam,lisa,john,sarah"); 

array_map("makeLiTag", $items); 

echo("<ul>" . implode("", $items) . "</ul>"); 

function makeLiTag(&$item, $key) 
{ 
    $item = "<li>$item</li>"; 
} 
+0

Je pense que vous devrez peut-être mettre la fonction de rappel en premier argument? array_map ('makeLiTag', $ items); – Stoosh

+0

@Stoosh: vous avez raison, merci. –

2

Ou vous pourriez faire exploser et foreach:

$array = explode(', ','adam, lisa, john, sarah'); 
foreach ($array as $name) { 
    $output .= '<li>' . $name . '</li>'; 
} 
echo '<ul>' . $output . '</ul>'; 

Peut-être un peu plus simple.

EDIT: Encore plus facile serait un str_replace régulier.

$list = '<ul><li>' . str_replace(', ','</li><li>','adam, lisa, john, sarah') . '</li></ul>'; 
echo $list; 
Questions connexes