$nSize = strlen($str);
$tmp = $str;
$szParam = '';
$aParameter = array();
$i = 0;
while ($i < $nSize) {
if ($tmp[$i] == '.' ) {
$aParameter[] = $szParam;
$szParam = '';
$cPrev = '';
$i++;
} elseif ($tmp[$i] == '\'' || $tmp[$i] == '"') {
// поиск кавычки
if ($tmp[$i] == '\'') {
do {
$nPos = strpos($str,'\'',$i + 1);
if ($nPos === FALSE) {
// Сбрасываем данные и выходим
$aParameter[] = $szParam.substr($str,$i);
$i = $nSize;
$nPos = $nSize;
} elseif ($str[$nPos - 1] != '\\') {
// Не слеш значит закрываем ковычку
$szParam .= substr($str,$i,$nPos - $i);
$i = $nPos;
} elseif ($str[$nPos - 1] == '\\'){
$szParam .= substr($str,$i,$nPos - $i - 1);
$i = $nPos;
$nPos = strpos($str,'\'',$i + 1);
$i++;
}else {
$i++;
}
} while ($i != $nPos);
$szParam .= '\'';
$i++;
}
if ($tmp[$i] == '"') {
do {
$nPos = strpos($str,'"',$i + 1);
if ($nPos === FALSE) {
// Сбрасываем данные и выходим
$aParameter[] = $szParam.substr($str,$i);
$i = $nSize;
$nPos = $nSize;
} elseif ($str[$nPos - 1] != '\\') {
// Не слеш значит закрываем ковычку
$szParam .= substr($str,$i,$nPos - $i);
$i = $nPos;
} elseif ($str[$nPos - 1] == '\\'){
$szParam .= substr($str,$i,$nPos - $i - 1);
$i = $nPos;
$nPos = strpos($str,'\'',$i + 1);
$i++;
}else {
$i++;
}
} while ($i != $nPos);
$szParam .= '"';
$i++;
}
} else {
$szParam .= $str[$i];
$i++;
}
}
if ($i <= $nSize) {
$aParameter[] = $szParam.substr($str,$i);
}
return $aParameter;