-class thread {
- var $thread_cnt=0,
- $id='',
- $childs = array();
-
- function addChild($id) {
- $this->childs[] = new thread();
- }
-
- function parseThread($thread_list, $i=0, $thread_cnt=0) {
- $par = false;
- $thread_id = '';
- for ($cnt = strlen($thread_list);$i<$cnt;++$i) {
- $char = $thread_list{$i};
- switch ($char) {
- case '(':
- $par = new thread();
- ++$thread_cnt;
- $thread_id = '';
- break;
- case ' ':
- $par->id = $thread_id;
- ++$thread_cnt;
- $res_a = $this->parseThread($thread,$i, $thread_cnt);
- $par->childs[] = $res_a[0];
- $i = $res_a[1];
- $thread_id = '';
- break;
- case ')':
- if ($thread_id) {
- $par->id = $thread_id;
- $thread_id='';
- }
- $par->thread_cnt=$thread_cnt;
- if (count($this->childs)) {
- return array($par, $i);
- } else {
- $this->childs[] = $par;
- }
- default:
- $thread_id .= $char;
- break;
- }
- }
- print_r($this);
- }
-}