Esempio n. 1
0
 static function parse($node, $allow = null, $deny = null)
 {
     $find = array();
     $replace = array();
     foreach (self::$find as $n => $rule) {
         list($code, $expression) = $rule;
         $allowed = !$allow || $allow && in_array($code, $allow);
         $denied = $deny && in_array($code, $deny);
         if ($allowed && !$denied) {
             $find[] = $expression;
             $replace[] = self::$replace[$n];
         }
     }
     $xml = new xml();
     foreach ($node->children() as $child) {
         $xml->append($xml->import($child));
     }
     foreach ($xml->query('//text()') as $text) {
         $parent = $text->parent();
         $bbcode = preg_replace($find, $replace, $text->value());
         $bbcode = xml::parse("<?xml version=\"1.0\" encoding=\"utf-8\" ?><bbcode>{$bbcode}</bbcode>");
         foreach ($bbcode->query('/bbcode/* | /bbcode/text()') as $child) {
             $parent->insert($xml->import($child), $text);
         }
         $parent->remove($text);
     }
     return $xml;
 }
Esempio n. 2
0
 function load($filename)
 {
     $this->xml = xml::load($filename);
     $query = array();
     foreach (self::$languages as $language) {
         $query[] = "/local//{$language}";
     }
     foreach ($this->xml->query(implode('|', $query)) as $node) {
         $doc = new xml();
         foreach ($this->xml->query('* | text()', $node) as $piece) {
             $doc->append($doc->import($piece));
         }
         $path = explode(':', str_replace('/', ':', trim($node->path(), '/')));
         array_shift($path);
         $this->local[implode(':', $path)] = xtree::create($doc);
     }
 }