Advertisement
Guest User

Untitled

a guest
Mar 14th, 2011
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.83 KB | None | 0 0
  1. <?php
  2.     function parseTag($xml)
  3.     {
  4.         $i = 0;
  5.         $x = false;
  6.         $tag = '';
  7.         $filter = str_split('1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM_',1);
  8.         for ($i = 0; $i < strlen($xml); $i++)
  9.         {
  10.             if ($x)
  11.             {
  12.                 if (in_array(substr($xml,$i,1),$filter))
  13.                 {
  14.                     $tag .= substr($xml,$i,1);
  15.                 }
  16.                 else
  17.                 {
  18.                     break;
  19.                 }
  20.             }
  21.        
  22.             if (substr($xml,$i,1) == '<')
  23.             {
  24.                 $x = true;
  25.             }
  26.         }
  27.         return $tag;
  28.     }
  29.    
  30.     function giveXmlContentByTag($xml,$tags)
  31.     {
  32.         $tag = parseTag($xml);
  33.        
  34.         if ($tag == '')
  35.         {
  36.             return $xml;
  37.         }
  38.         else
  39.         {
  40.             //echo($xml."\r\n---------------\r\n");
  41.             $xmlcontent = explode('<'.$tag,$xml);
  42.             $xmlcontent = explode('</'.$tag,$xmlcontent[1]);
  43.             if (strstr($xmlcontent[0],'<'))
  44.             {
  45.                 $xmlcontent = explode('<',$xmlcontent[0]);
  46.                 unset($xmlcontent[0]);
  47.                 $xmlcontent = '<' . implode('<',$xmlcontent);
  48.             }
  49.             else
  50.             {
  51.                 $xmlcontent = explode('>',$xmlcontent[0]);
  52.                 $xmlcontent = $xmlcontent[count($xmlcontent)-1];
  53.             }
  54.             $i = 0;
  55.             while(true)
  56.             {
  57.                 if ($tags[$tag.'_'.$i] == '')
  58.                 {
  59.                     $tags[$tag.'_'.$i] = $xmlcontent; break;
  60.                 }
  61.                 else
  62.                 {
  63.                     $i += 1;
  64.                 }
  65.             }
  66.            
  67.             $rest = explode('</'.$tag,$xml); unset($rest[0]);
  68.             $rest = implode('</'.$tag,$rest);
  69.             $rest = explode('<',$rest); unset($rest[0]);
  70.             $rest = '<' . trim(implode('<',$rest));
  71.  
  72.             if (trim($rest) != '<')
  73.             {
  74.                 return(giveXmlContentByTag($rest,$tags));
  75.             }
  76.             else
  77.             {
  78.                 return($tags);
  79.             }
  80.         }
  81.     }
  82.    
  83.     function pall($xml)
  84.     {
  85.         $parsed = giveXmlContentByTag($xml,array());
  86.         foreach ($parsed as $pk => $pv)
  87.         {
  88.             if (strstr($pv,'<'))
  89.             {
  90.                 @$parsed[$pk] = pall($pv,array());
  91.             }
  92.             else
  93.             {
  94.                 $parsed[$pk] = $pv;
  95.             }
  96.         }
  97.         return ($parsed);
  98.     }
  99.    
  100.     $parsed_array = pall(str_replace('?xml','xml',$xml));
  101. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement