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

问题描述:

我有一个textarea字段。输出将是一个HTML列表。每一行将是一个新的列表项。如果用户输入一个hypen(' - '),则列表项将被嵌套将用户输入转换为PHP中的列表数组

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创建列表

+0

将这份名单只列出3或者是N + – *er 2011-03-23 16:57:29

+0

@*er它的N – iStryker 2011-03-23 17:15:58

试试这个(这还没有经过测试,因此它可能需要一些调整):

$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); 
     }  
    } 
} 
+0

无法解除($ val [0])导致致命错误 – iStryker 2011-03-23 18:03:39

+0

是的。抱歉。你必须用字符串替换第一个字母而不是那个。正如我上面所说的那样,这没有经过严格测试 – Neal 2011-03-23 18:04:19