<?PHP

function parse_dependency($text){
    
    
// version 1
    /*$text = preg_replace("`([a-z0-9]*)\?`", "<br/><b><a href=\"/Search?search=&use=\\1\">\\1</a></b>?", $text);
    return $text;*/
    
    
$text trim($text);
    
    
$pos 0;
    
$tab '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
    
$tab_count 0;
    
$go true;
    
$nobreak true;
    
$justbreak true;
    
$last_case '';
    
$last_case2 '';
    while(
$go){
        
        
$chr substr($text,$pos,1);
        
        if(
$nobreak$break '';
        
        switch(
$chr){
            case 
'(':
                
$text substr($text0$pos) .$break.str_repeat($tab$tab_count+1) . substr($text$pos);
                
$tab_count += 1;
                
$pos += strlen($break.str_repeat($tab$tab_count));
                
                
$last_case2 $last_case;
                
$last_case '(';
                
                break;
            case 
')':
                
$text substr($text0$pos+1) .$break.str_repeat($tab$tab_count 1) . substr($text$pos 1);
                
$tab_count -= 1;
                
$pos += strlen($break.str_repeat($tab$tab_count));
                
                
$last_case2 $last_case;
                
$last_case ')';
                
                break;
            case 
'?':
                
$text substr($text0$pos 1) . '<br/>' substr($text$pos 1);
                
$pos += strlen('<br/>');
                
                if(
$tab_count == && $last_case2 != ')'){
                    
$spacepos strrpos(substr($text0$pos), ' ');
                    
$text substr($text0$spacepos) . '<br/>' substr($text$spacepos);
                    
$pos += strlen('<br/>');
                }
                
                
$last_case2 $last_case;
                
$last_case '?';
                
$nobreak true;
                
                break;
            case 
' ':
                if(
$tab_count == && !$nobreak && $last_case != ' '){
                    
$text substr($text0$pos 1) . '<br/>' substr($text$pos 1);
                    
$pos += strlen('<br/>');
                }
                
                
$last_case2 $last_case;
                
$last_case ' ';
                
                break;
            case 
'/':
                
$last_case2 $last_case;
                
$last_case '/';
            default:
                
$nobreak false;
        }
        
        
$break '<br/>';
        
        
$pos++;
        if(
strlen($text) <= $pos$go false;
    }
    
/*    $text = preg_replace("`([a-zA-Z0-9_\-]+)/([a-zA-Z0-9_\-]+)`", "<a href=\"/\\1/\\2\">\\1/\\2</a>", $text);*/
    
    
$text preg_replace("`([a-zA-Z0-9_\-]+)/(([a-zA-Z0-9_]+)((([\-]?[a-zA-Z]{1})?)([a-zA-Z0-9_]*)){0,4})`""<a href=\"/\\1/\\2\">\\1/\\2</a>"$text);
    
/*    $text = preg_replace("`([a-zA-Z0-9_\-]+)/(([a-zA-Z0-9_\-]|[a-zA-Z_])+)([a-zA-Z]\d{1})`", "<a href=\"/\\1/\\2\">\\1/\\2\\4</a>", $text); */
    
    
$text preg_replace("`([a-z0-9\-]*)\?`""<b><a href=\"/Search?search=&use=\\1\">\\1</a></b>?"$text);
    
    return 
$text;
}

?>