Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
HTML-Dokument Parsen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
HTML-Dokument Parsen


 
schlimmerfinger
21-08-2005, 19:44 
 
Wie ist es möglich ein HTML-Dokument, mit PHP4, wie eine XML-Datei
zu Parsen? Ich habe es mit SAX versucht aber musste leider festellen
das es so nicht funktioniert.

<?php
class FormPraser {
var $strXML = array();
var $_parser;

function FormPraser() {
$this->_parser = xml_parser_create();

xml_set_object($this->_parser, &$this);
xml_set_element_handler(
$this->_parser,
"startHandler",
"endHandler"
);
xml_set_character_data_handler(
$this->_parser,
"cdataHandler"
);
xml_parser_set_option(
$this->_parser,
XML_OPTION_CASE_FOLDING,
0
);
}

/**
* handle start element
*
* @access private
* @param resource xml parser resource
* @param string name of the element
* @param array attributes
*/
function startHandler($xp, $name, $attribs) {
printf('handle start tag: %s<br />', $name);
}

/**
* handle start element
*
* @access private
* @param resource xml parser resource
* @param string name of the element
*/
function endHandler($xp, $name) {
printf('handle end tag: %s<br />', $name);
}

/**
* handle character data
*
* @access private
* @param resource xml parser resource
* @param string character data
*/
function cdataHandler($xp, $cdata) {
printf('CDATA: %s<br />', $cdata);
}

function setInputString($strXML) {
if (is_string($strXML)) {
$this->strXML = preg_split('/(\r\n|\r|\n)/', $strXML);
}
}

function parse() {
for ($i = 0, $j = sizeof($this->strXML); $i < $j; ++$i) {
$res = xml_parse(
$this->_parser,
$this->strXML[$i],
!array_key_exists(($i + 1), $this->strXML)
);

if ($res == false) {
printf(
"XML error: %s at line %d",
xml_error_string(xml_get_error_code($this->_parser)),
xml_get_current_line_number($this->_parser)
);
break;
}
}

xml_parser_free($this->_parser);
}
}

$sax =& new FormPraser();
$sax->setInputString(join('', file('index.htm')));
$sax->parse();

Resultat:XML error: SYSTEM or PUBLIC, the URI is missing at line 1

 
ghostgambler
21-08-2005, 20:33 
 
HTML != XML
http://www.sachen-fuer-webmaster.de/printfeature.php?artid=92
Wetten die ganzen Deklarationen am Anfang fehlen?
Wenn sollte es eine XHTML sein, aber das passt dir wahrscheinlich wieder nicht, oder? (Sie sollte dann auch valide sein, änder nicht nur den doctype, sonst tret ich dich :D)

 
schlimmerfinger
21-08-2005, 22:00 
 
Original geschrieben von ghostgambler
HTML != XML
http://www.sachen-fuer-webmaster.de/printfeature.php?artid=92
Wetten die ganzen Deklarationen am Anfang fehlen?
Das ist mir auch schon klar. Doch ein Versuch war es Wert :D
Original geschrieben von ghostgambler
Wenn sollte es eine XHTML sein, aber das passt dir wahrscheinlich wieder nicht, oder? (Sie sollte dann auch valide sein, änder nicht nur den doctype, sonst tret ich dich :D) Kann Dir leider nicht so ganz folgen :dontknow: Hat jemand einen Anhaltspunkt wie eine HTML-Datei wie eine XML-Datei Parsen kann.

 
onemorenerd
21-08-2005, 23:40 
 
'Kann man so Auto fahren, wie man Bus fährt?'

Wozu möchtest du das denn?

 
schlimmerfinger
22-08-2005, 13:33 
 
Original geschrieben von onemorenerd
'Kann man so Auto fahren, wie man Bus fährt?' Im Primzip ja kann man.

Original geschrieben von onemorenerd
Wozu möchtest du das denn? Ich will bestimmte TAGs auslesen.

 
hhcm
22-08-2005, 13:42 
 
Versteh ich nich..
Wenn du HTML Parsen willst, dann nutz doch einen HTML-Parser wie den (http://www.phpclasses.org/browse/package/244.html)
z.B und keinen XML Parser. :goth:

 
onemorenerd
22-08-2005, 14:11 
 
... oder einfach preg_match_all() (http://php.net/preg_match_all)?

 
schlimmerfinger
26-08-2005, 02:50 
 
http://pear.php.net/package/XML_HTMLSax3/


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:56 Uhr.