function parseCommandString( $str ) {
$chunks = explode( '"', $str );
$cmd = array();
// Split the command into space-separated parameters (preserving quoted portions)
$c = count($chunks);
for( $i=0; $i<$c; $i++ ) {
if( $i % 2 == 0 ) {
if( $chunks[$i] == '' ) {
continue;
}
$params = explode( ' ', $chunks[$i] );
$pc = count($params);
for( $j=0; $j<$pc; $j++ ) {
if( $params[$j] != '' ) {
$cmd[] = $params[$j];
}
}
} else {
if( $chunks[$i] != '' ) {
$cmd[] = $chunks[$i];
}
}
}
return $cmd;
}
看起来很简单,但我对这是否是我想做的最佳实现缺乏洞察力。也就是说,我只需要先将一个字符串分成一个子字符串数组,然后按引号部分,然后按空格(即在未引用的部分中)。它就像我网站上的实际命令提示符。
洞察力赞赏。