|
|
@ -32,13 +32,15 @@ $MIME_IMAGE = 5;
|
|
|
|
$MIME_VIDEO = 6;
|
|
|
|
$MIME_VIDEO = 6;
|
|
|
|
$MIME_OTHER = 7;
|
|
|
|
$MIME_OTHER = 7;
|
|
|
|
|
|
|
|
|
|
|
|
function iml_ClosingParenPos($str, $start){
|
|
|
|
function iml_ClosingParenPos($str, $start) {
|
|
|
|
$level=0;
|
|
|
|
$level=0;
|
|
|
|
$len = strlen($str);
|
|
|
|
$len = strlen($str);
|
|
|
|
$in_quote = 0;
|
|
|
|
$in_quote = 0;
|
|
|
|
for ($i=$start;$i<$len;$i++){
|
|
|
|
|
|
|
|
if ($str[$i]=="\"") $in_quote = ($in_quote + 1) % 2;
|
|
|
|
for ($i=$start; $i<$len; $i++) {
|
|
|
|
if (!$in_quote){
|
|
|
|
if ($str[$i] == '"' && $str[$i-1] != "\\")
|
|
|
|
|
|
|
|
$in_quote = ($in_quote + 1) % 2;
|
|
|
|
|
|
|
|
if (!$in_quote) {
|
|
|
|
if ($str[$i]=="(") $level++;
|
|
|
|
if ($str[$i]=="(") $level++;
|
|
|
|
else if (($level > 0) && ($str[$i]==")")) $level--;
|
|
|
|
else if (($level > 0) && ($str[$i]==")")) $level--;
|
|
|
|
else if (($level == 0) && ($str[$i]==")")) return $i;
|
|
|
|
else if (($level == 0) && ($str[$i]==")")) return $i;
|
|
|
@ -51,15 +53,16 @@ function iml_ParseBSString($str){
|
|
|
|
$id = 0;
|
|
|
|
$id = 0;
|
|
|
|
$a = array();
|
|
|
|
$a = array();
|
|
|
|
$len = strlen($str);
|
|
|
|
$len = strlen($str);
|
|
|
|
|
|
|
|
|
|
|
|
$in_quote = 0;
|
|
|
|
$in_quote = 0;
|
|
|
|
for ($i=0; $i<$len; $i++){
|
|
|
|
|
|
|
|
if ($str[$i] == "\"") $in_quote = ($in_quote + 1) % 2;
|
|
|
|
for ($i=0; $i<$len; $i++) {
|
|
|
|
else if (!$in_quote){
|
|
|
|
if ($str[$i] == '"') {
|
|
|
|
if ($str[$i] == " "){ //space means new element
|
|
|
|
$in_quote = ($in_quote + 1) % 2;
|
|
|
|
|
|
|
|
} else if (!$in_quote) {
|
|
|
|
|
|
|
|
if ($str[$i] == " ") { //space means new element
|
|
|
|
$id++;
|
|
|
|
$id++;
|
|
|
|
while ($str[$i+1] == " ") $i++; // skip additional spaces
|
|
|
|
while ($str[$i+1] == " ") $i++; // skip additional spaces
|
|
|
|
} else if ($str[$i]=="("){ //new part
|
|
|
|
} else if ($str[$i]=="(") { //new part
|
|
|
|
$i++;
|
|
|
|
$i++;
|
|
|
|
$endPos = iml_ClosingParenPos($str, $i);
|
|
|
|
$endPos = iml_ClosingParenPos($str, $i);
|
|
|
|
$partLen = $endPos - $i;
|
|
|
|
$partLen = $endPos - $i;
|
|
|
@ -67,10 +70,15 @@ function iml_ParseBSString($str){
|
|
|
|
$part = substr($str, $i, $partLen);
|
|
|
|
$part = substr($str, $i, $partLen);
|
|
|
|
$a[$id] = iml_ParseBSString($part); //send part string
|
|
|
|
$a[$id] = iml_ParseBSString($part); //send part string
|
|
|
|
$i = $endPos;
|
|
|
|
$i = $endPos;
|
|
|
|
}else $a[$id].=$str[$i]; //add to current element in array
|
|
|
|
} else
|
|
|
|
}else if ($in_quote){
|
|
|
|
$a[$id].=$str[$i]; //add to current element in array
|
|
|
|
if ($str[$i]=="\\") $i++; //escape backslashes
|
|
|
|
} else if ($in_quote) {
|
|
|
|
else $a[$id].=$str[$i]; //add to current element in array
|
|
|
|
if ($str[$i]=="\\") {
|
|
|
|
|
|
|
|
$i++; //escape backslashes
|
|
|
|
|
|
|
|
if ($str[$i] == '"' || $str[$i] == "\\")
|
|
|
|
|
|
|
|
$a[$id] .= $str[$i];
|
|
|
|
|
|
|
|
} else
|
|
|
|
|
|
|
|
$a[$id] .= $str[$i]; //add to current element in array
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|