For quite sometime now I have been really annoyed by the unreliability of serialize and unserialize , when you would have a large string or some some special characters in there that wouldnt turn back into variables. So finally after not finding a decent alternative by someone else ( maybe I am only one suffering from the problem????? ) , I decided to write my own two functions.
These two are working great for me , hope they serve some purpose to someone else. I am sure there is room for improvement here, please send in any suggestions or ideas to incorporate.
-
-
/// Usage
-
////– first parameter is the var name , second is the var itself
-
$string = makeXML(’somevarname’ , $somevarname);
-
-
////— extractVars takes the above string as parameter ,
-
////— and returns an arrray with variable name as key and variable itself
-
///— as value , i have used extract() to take all vars into code.
-
-
-
function extractVars($xml , $name=” , $type=”){
-
$reg="!<xmlvar name=\’(.*?)\’ type=’(.*?)’>(.*?)</xmlvar name=\’\\1\’>!s";
-
-
foreach($matches[1] as $index=>$key){
-
$optname = $key;
-
$opttype = $matches[2][$index];
-
$optval = $matches[3][$index];
-
-
-
if($opttype == ‘object’){
-
$bigarr[$optname] = (object)extractVars($optval , $optname , $opttype);
-
}elseif($opttype==‘array’){
-
$bigarr[$optname] = extractVars($optval , $optname , $opttype);
-
}else{
-
$bigarr[$optname] = $optval;
-
}
-
}
-
-
return $bigarr;
-
}
-
-
-
-
function makeXML($name , $var="" , $parent = NULL ){
-
-
$xml .= "<xmlvar name=’$parent$name’ type=’object’>";
-
foreach($var as $key=>$val){
-
$xml .= makeXML($key , $val , $parent.$name);
-
}
-
$xml .= "</xmlvar name=’$parent$name’>\r\n";
-
$xml .= "<xmlvar name=’$parent$name’ type=’array’>";
-
foreach($var as $key=>$val){
-
$xml .= $tab.makeXML($key , $val , $parent.$name);
-
}
-
$xml .= "</xmlvar name=’$parent$name’>\r\n";
-
$xml .= "<xmlvar name=’$parent$name’ type=’bool’>";
-
$xml .= "$var";
-
$xml .= "</xmlvar name=’$parent$name’>\r\n";
-
}else{
-
$xml .= "<xmlvar name=’$parent$name’ type=’string’>";
-
$xml .= "$var";
-
$xml .= "</xmlvar name=’$parent$name’>\r\n";
-
}
-
return $xml;
-
}
-
Comments