在PHP中将用户输入转换为列表数组

时间:2011-03-23 16:50:33

标签: php arrays list

我有一个textarea字段。输出将是HTML列表。每一行都是一个新的列表项。如果用户键入了一个hypen(' - '),那么列表项将嵌套

Sample
test1
te-st2
-test3
-test4
--test5
--test6
-test7
test8
-test9
test10

Output should be
Array (test1, 
       te-st2,
       array(test3, 
             test4,
             array(test5, test6),
             test7
       ),
      test8,
      array(test9),
      test10

我不担心关键值。 然后我从http://api.drupal.org/api/drupal/includes--theme.inc/function/theme_item_list运行theme_item_list 创建列表

1 个答案:

答案 0 :(得分:1)

尝试这个(这还没有经过测试,所以可能需要稍微调整一下):

 $sample = "test1
te-st2
-test3
-test4
--test5
--test6
-test7
test8
-test9
test10"

$arr = explode("\n",$sample);
foreach($arr as $key=>$val){
    if($val[0] == '-'){
        unset($val[0]);
        if($val[1] == '-'){
            unset($val[0]);
            unset($arr[$key]);
            $arr[$key-1][] = $val;
        }
        else {
            $arr[$key] = array($val);
        }      
    }
}