iHtmlText = $aHtmlText; $this->iHtmlTextLength = strlen($aHtmlText); $this->setTextIndex (0); } /** * Method parse. * Parses the next node. Returns false only if * the end of the HTML text has been reached. * Updates values of iNode* fields. */ function parse() { $text = trim($this->skipToElement()); if ($text != "") { $this->iNodeType = NODE_TYPE_TEXT; $this->iNodeName = "Text"; $this->iNodeValue = $text; $this->iNodeAttributes = 0; return true; } return $this->readTag(); } function clearAttributes() { $this->iNodeAttributes = array(); } function readTag() { global $HTML_ATTRIBUTE_STAND_ALONE; if ($this->iCurrentChar != "<") { $this->iNodeType = NODE_TYPE_DONE; return false; } $this->skipInTag (array("<")); $this->clearAttributes(); $name = $this->skipToBlanksInTag(); $pos = strpos($name, "/"); if ($pos === 0) { $this->iNodeType = NODE_TYPE_ENDELEMENT; $this->iNodeName = substr ($name, 1); $this->iNodeValue = ""; } else { if (!$this->isValidTagIdentifier ($name)) { $comment = false; if ($name == "!--") { $rest = $this->skipToStringInTag ("-->"); if ($rest != "") { $this->iNodeType = NODE_TYPE_COMMENT; $this->iNodeName = "Comment"; $this->iNodeValue = "<" . $name . $rest; $comment = true; } } if (!$comment) { $this->iNodeType = NODE_TYPE_TEXT; $this->iNodeName = "Text"; $this->iNodeValue = "<" . $name; } return true; } else { $this->iNodeType = NODE_TYPE_ELEMENT; $this->iNodeValue = ""; $nameLength = strlen($name); if ($nameLength > 0 && substr($name, $nameLength - 1, 1) == "/") { $this->iNodeName = substr($name, 0, $nameLength - 1); }else { $this->iNodeName = $name; } $this->iNodeName = strtolower($this->iNodeName); } } while ($this->skipBlanksInTag()) { $attrName = $this->skipToBlanksOrEqualsInTag(); if ($attrName != "") { $attrName = strtolower($attrName); if (array_search($attrName, $HTML_ATTRIBUTE_STAND_ALONE)!==false){ $this->iNodeAttributes[$attrName] = 1; }else{ $this->skipBlanksInTag(); if ($this->iCurrentChar == "=") { $this->skipEqualsInTag(); $this->skipBlanksInTag(); $value = $this->readValueInTag(); $this->iNodeAttributes[$attrName] = $value; }else { $this->iNodeAttributes[$attrName] = ""; } } } } $this->skipEndOfTag(); return true; } function isValidTagIdentifier ($name) { return ereg ("[A-Za-z0-9]+", $name); } function skipBlanksInTag() { return "" != ($this->skipInTag (array (" ", "\t", "\r", "\n" ))); } function skipToBlanksOrEqualsInTag() { return $this->skipToInTag (array (" ", "\t", "\r", "\n", "=" )); } function skipToBlanksInTag() { return $this->skipToInTag (array (" ", "\t", "\r", "\n" )); } function skipEqualsInTag() { return $this->skipInTag (array ( "=" )); } function readValueInTag() { $ch = $this->iCurrentChar; $value = ""; if ($ch == "\"") { $this->skipInTag (array ( "\"" )); $value = $this->skipToInTag (array ( "\"" )); $this->skipInTag (array ( "\"" )); } else if ($ch == "'") { $this->skipInTag (array ( "'" )); $value = $this->skipToInTag (array ( "'" )); $this->skipInTag (array ( "'" )); } else { $value = $this->skipToBlanksInTag(); } return $value; } function setTextIndex ($index) { $this->iHtmlTextIndex = $index; if ($index >= $this->iHtmlTextLength) { $this->iCurrentChar = -1; } else { $this->iCurrentChar = $this->iHtmlText{$index}; } } function moveNext() { if ($this->iHtmlTextIndex < $this->iHtmlTextLength) { $this->setTextIndex ($this->iHtmlTextIndex + 1); return true; } else { return false; } } function skipEndOfTag() { $sb = ""; if (($ch = $this->iCurrentChar) !== -1) { $match = ($ch == ">"); if (!$match) { return $sb; } $sb .= $ch; $this->moveNext(); } return $sb; } function skipInTag ($chars) { $sb = ""; while (($ch = $this->iCurrentChar) !== -1) { if ($ch == ">") { return $sb; } else { if (array_search($ch,$chars) === false) return $sb; $sb .= $ch; $this->moveNext(); } } return $sb; } function skipToInTag ($chars) { $sb = ""; while (($ch = $this->iCurrentChar) !== -1) { if ($ch == '>' || array_search($ch,$chars) !== false) return $sb; $sb .= $ch; $this->moveNext(); } return $sb; } function skipToElement() { $sb = ""; while (($ch = $this->iCurrentChar) !== -1) { if ($ch == "<") { return $sb; } $sb .= $ch; $this->moveNext(); } return $sb; } /** * Returns text between current position and $needle, * inclusive, or "" if not found. The current index is moved to a point * after the location of $needle, or not moved at all * if nothing is found. */ function skipToStringInTag ($needle) { $pos = strpos ($this->iHtmlText, $needle, $this->iHtmlTextIndex); if ($pos === false) { return ""; } $top = $pos + strlen($needle); $retvalue = substr ($this->iHtmlText, $this->iHtmlTextIndex, $top - $this->iHtmlTextIndex); $this->setTextIndex ($top); return $retvalue; } } class HTMLFileParser extends HTMLParser { function HTMLFileParser($fileName){ $fp = fopen ($fileName, "r"); $content = ""; while (true) { $data = fread ($fp, 8192); if (strlen($data) == 0) { break; } $content .= $data; } fclose ($fp); $this->HTMLParser($content); } } class HTMLURLParser extends HTMLParser { function HTMLURLParser($url){ $fp = fopen ($url, "r"); $content = ""; while (true) { $data = fread ($fp, 8192); if (strlen($data) == 0) { break; } $content .= $data; } fclose ($fp); $this->HTMLParser(file_get_contents($content)); } } class TreeHTML{ var $type = array(); var $name = array(); var $value = array(); var $attribute = array(); var $field = array(); var $addText=''; /** * @return array * @desc Tao mot tree node cac phan tu cua HTML */ function TreeHTML($parser, $file=true){ $i = 0; if ($file){ while ($parser->parse()) if (strtolower($parser->iNodeName)=='body') break; } while ($parser->parse()){ if ($parser->iNodeType == NODE_TYPE_ENDELEMENT && strtolower($parser->iNodeName)=='body' && $file) break; $this->type[$i] = $parser->iNodeType; $this->name[$i] = $parser->iNodeName; if ($parser->iNodeType == NODE_TYPE_TEXT) $this->value[$i] = $parser->iNodeValue; if ($parser->iNodeType == NODE_TYPE_ELEMENT){ $this->attribute[$i] = $parser->iNodeAttributes; if (isset($parser->iNodeAttributes['name'])){ $this->field[$i] = trim($parser->iNodeAttributes['name'],"\"' "); } if ( ($file && $parser->iNodeName == 'input' && isset($this->attribute[$i]['type']) && $this->attribute[$i]['type']=='text' && !isset($this->attribute[$i]['onkeydown'])) || ($file && $parser->iNodeName == 'textarea')) $this->attribute[$i]['onkeyup'] = 'initTyper(this)'; } $i++; } } /** * @desc Them hoac sua field co ten $name mot thuoc tinh $attr */ function set($name,$attr, $value){ $index = array_search($name, $this->field); if (!$index) return; $this->attribute[$index][$attr] = $value; } /** * @desc Tra ve thuoc tinh $attr cua field $name */ function get($name,$attr){ $index = array_search($name, $this->field); if ($index && isset($this->attribute[$index][$attr])) return $this->attribute[$index][$attr]; return ''; } /** * @desc Tra ve ten cua tag HTML ung voi field $name */ function getTag($name){ $index = array_search($name, $this->field); //if (!isset($this->name[$index])) {debug($name);debug($index);} return $this->name[$index]; } /** * @desc Tra ve cac thuoc tinh gom tabindex, size, maxlength */ function getAll($name){ $index = array_search($name, $this->field); if ($index){ $t = ''; if (isset($this->attribute[$index]['tabindex'])) $t .= ' tabindex='.$this->attribute[$index]['tabindex']; if (isset($this->attribute[$index]['size'])) $t .= ' size='.$this->attribute[$index]['size']; if (isset($this->attribute[$index]['maxlength'])) $t .= ' maxlength='.$this->attribute[$index]['maxlength']; return $t; } return ''; } /** * @desc Thay doi node ten $name thanh text voi noi dung $text */ function replace($name,$text){ $index = array_search($name, $this->field); if (!$index) return; $this->removeIndex($index); $this->type[$index] = NODE_TYPE_TEXT; $this->value[$index] = $text; } /** * @desc Thay doi node ten $name thanh text voi noi dung $text */ function remove($name){ $index = array_search($name, $this->field); if (!$index) return; if (!isset($this->name[$index])) return;//echo "Remove: $name
"; $rname = $this->name[$index]; $len = count($this->name); for ($end=$index+1;$end<$len;$end++){ if (isset($this->name[$end]) && $this->name[$end] == $rname) break; } if (isset($this->type[$end]) && $this->type[$end]==NODE_TYPE_ENDELEMENT){ for ($i=$index;$i<=$end;$i++) $this->removeIndex($i); }else $this->removeIndex($index); } /** * @desc Private: Xoa 1 object trong tree */ function removeIndex($index){ $this->type[$index]=-1; unset($this->field[$index]); unset($this->name[$index]); unset($this->value[$index]); unset($this->attribute[$index]); } /** * @return string * @desc Create a string HTML from a tree
* An Item have format ($iNodeType, $iNodeName, $iNodeValue, $iNodeAttributes) */ function toHTML(){ global $HTML_ATTRIBUTE_STAND_ALONE; $result = ''; $type = &$this->type; $name = &$this->name; $valu = &$this->value; $attr = &$this->attribute; $len = count($type); for ($i=0; $i<$len;$i++){ $str = ''; switch($type[$i]){ case NODE_TYPE_ELEMENT: if ($name[$i] != 'textarea'){ $str .= '<'.$name[$i]; if (isset($attr[$i])) foreach($attr[$i] as $key => $value){ if (array_search($value,$HTML_ATTRIBUTE_STAND_ALONE)!==false) $str .= " $key"; else $str .= " $key=\"$value\""; } $str .= '>'; }else{//is tag ATEXTAREA $content = ''; $str .= '<'.$name[$i]; if (isset($attr[$i])) foreach($attr[$i] as $key => $value){ if ($key == 'value') $content = $value; elseif (array_search($value,$HTML_ATTRIBUTE_STAND_ALONE)!==false) $str .= " $key"; else $str .= " $key=\"$value\""; } $str .= '>'.$content; } break; case NODE_TYPE_ENDELEMENT: $str .= ''; break; case NODE_TYPE_TEXT: $str = $valu[$i]; break; } $result .= $str; //if (isset($nobu[$i])) $result .= $nobu[$i]; } return ($result.$this->addText); } /** * @desc Set all input text to readonly */ function setReadonlyAll(){ foreach ($this->name as $i => $name){ if ($name == 'input' && isset($this->attribute[$i]['type'])){ switch($this->attribute[$i]['type']){ case 'text': $this->attribute[$i]['readonly'] = 'true'; $this->attribute[$i]['style'] = 'border: 1 dotted #999999'; break; case 'select': case 'checkbox': $this->attribute[$i]['disabled'] = 1; break; } }elseif ($name == 'textarea'){ $this->attribute[$i]['readonly'] = 'true'; $this->attribute[$i]['style'] = 'border: 1 dotted #999999'; } } } /** * @desc Set an input text to readonly */ function setReadonly($name){ $index = array_search($name, $this->field); if (!$index) return; $this->attribute[$index]['readonly'] = true; $this->attribute[$index]['style'] = 'border: 1 dotted #999999'; } } ?> www.sturmtiger.com :: Community,Panzermodelle,Dioramen,Shop
Home  Suche
Dein Account Gäste Buch
DownLoads Web Links
Gallery Topics
Forum Kontakt
image
Hallo Gast  [ Mitglied werden | Anmelden ]
image
imageimageimageimage
image image
Sturmtiger.com Chat
image image
Navigation
image image
Login






image image
Sturmtiger RSS Feeds
image image
Wir führen diese Farben
image image
Wählt Sturmtiger.com
image image
Wir sind Mitglied bei
image image
Besucher Statistik
Pageviews seit Januar 2003:
36922239
Heute:
40166
Gestern:
22789

Beste Uhrzeit: 22:00
Schwächste Uhrzeit: 5:00
Bester Tag: Sonntag's
Schwächster Tag: Donnerstag's
  Mitglieder:
  Heute:  0
  Gestern:  N/A
  Gesamt:  447
image image
Armorama.com News
Accurate Armour: Latest Releases
1/24 Scale Base From Monroe Perdu
Pro Art Models Modern Tie-Downs
DML: SU-85M/SU-100 in 1/35th
Daimler Armoured Car Mk II
Latest from Great Wall & LionRoar
BitsKrieg: Sd.Kfz11 & 251 Tires
Latest from Legend Productions
Masterbox: 8th Army Vs. D.A.K.
Tankograd: Latest Release List
image image
Wichtiger Hinweis



Wir distanzieren uns ausdrücklich von jeglichem rechten Gedankengut.


Die hier abgebildeten Modelle und Fahrzeuge dienen nicht der Verherrlichung des 2. Weltkrieges, des 3. Reiches oder dessen Organisationen.

Bei der Einsendung von Fotos bitten wir darum, verfassungswidrige Abzeichen gemäß §86 StGB unkenntlich zu machen!

image image
Ältere News
ältere Beiträge

Function main in module xFPDF returned.
 Imageimage imageimage


rss_news  rss_forum

Suchmaschinenoptimierung mit Ranking-Hits

      Copyright © 2002- 2010 Sturmtiger.com

   Impressum/Kontakt   |  Nutzungsbedingungen | Datenschutz | Inhaltsverzeichnis