php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.03.2010, 22:12  
Neuer Benutzer
 
Registriert seit: 22.03.2010
Beiträge: 3
PHP-Kenntnisse:
Anfänger
tadeus befindet sich auf einem aufstrebenden Ast
Standard DOMDocument

Hallo zusammen,

ich bin neu hier und auf euch gestoßen, da auf der Suche nach ein bisschen Hilfe bei folgender Sache:

Und zwar probiere ich gerade mit der DOMDocument Klasse herum. Ziel ist einfach mal eine Seite einlesen und ein paar Elemente als Liste ausgeben.

Mein Code dazu ist folgender:

PHP-Code:
    $doc = new DOMDocument();
    if (!@
$doc->loadHTMLFile("test.html")) {
        echo 
"existiert nicht\n";
        return;
    }
    
$list $doc->getElementsByTagName("meta");

    
var_dump($doc);
    
var_dump($list); 
Die Datei wird gefunden, jedoch sind beides leere Objekte:

object(DOMDocument)#1 (0) {
}

object(DOMNodeList)#2 (0) {
}

Woran liegt das?

Danke vorab

Viele Grüße

tadeus
tadeus ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 22.03.2010, 22:40  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.991
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Man kann diese nativen Objekte nicht listen lassen. Alles was die Doku beschreibt (bspw. http://de.php.net/manual/en/class.domdocument.php) existiert an Properties, wird aber nicht via Dump angezeigt. Das ist bei allen internen PHP-Objekten so.
Die Knoten sind auslesbar, werden aber nicht angezeigt. (Ob das beim Lese/Schreibzugriff zur Laufzeit auf das XML wirkt entzieht sich meiner Kenntnis).
Die Objekte sind also nicht wirklich leer. Du musst nur weiter auf Subelemente zugreifen. Über „textContent“ des DOMNode-Objektes kommst Du bspw. mal probeweise an ein paar Daten.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 22.03.2010, 22:46  
Neuer Benutzer
 
Registriert seit: 22.03.2010
Beiträge: 3
PHP-Kenntnisse:
Anfänger
tadeus befindet sich auf einem aufstrebenden Ast
Standard

OK, aber wenn ich an die Elemente will, bekomm ich auch nichts.

PHP-Code:
    $doc = new DOMDocument(); 
    if (!@
$doc->loadHTMLFile("test.html")) { 
        echo 
"existiert nicht\n"
        return; 
    } 
    
$list $doc->getElementsByTagName("meta"); 

    
$count  $doc->length;
    
    for (
$idx 0$idx $count$idx++) {
        print 
$doc->item($idx)->nodeValue "\n";
    } 
Edit:
Ein $doc->saveHTMLFile("test2.html"); am Ende speichert mir aber wieder ein nettes HTML File mit dem selben Inhalt. Irgendwie greife ich falsch drauf zu, aber ich find den Fehler nicht.

Geändert von tadeus (22.03.2010 um 22:57 Uhr).
tadeus ist offline  
Alt 22.03.2010, 23:55  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.991
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Vielleicht solltest Du Dir ein Element mit ausreichend Knoten aussuchen. $doc ($doc->length;) hat nur einen, den Root-Knoten. Vielleicht wolltest Du auch $list benutzen?

Zitat:
PHP-Code:
<?php

$items 
$doc->childNodes;

foreach (
$items as $item) {
    echo 
$item->nodeValue "\n";
}

?>
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 23.03.2010, 06:18  
Dominik
Gast
 
Beiträge: n/a
Standard

Also ich hab nen Bot damit geschrieben:

PHP-Code:
$forms $doc->getElementsByTagName('form');
foreach (
$forms as $tag) {
echo 
$tag->getAttribute('action');
echo 
$tag->getAttribute('name');

Das muss bei dir bzw mit jeden tag auch gehen wenn es die attribute hat
 
Alt 23.03.2010, 13:30  
Neuer Benutzer
 
Registriert seit: 22.03.2010
Beiträge: 3
PHP-Kenntnisse:
Anfänger
tadeus befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank, das hat mich jetzt schon sehr weitergebracht.

Wie sieht es eigentlich bei der Methode $doc->loadHTMLFile(); aus? Damit kann ich ja auch eine Adresse direkt aufrufen. Ist es möglich die Zeit bis es zu einem Timeout kommt zu verringern, also wenn z.B. mein Webserver ausgeschaltet ist.
tadeus ist offline  
Alt 23.03.2010, 14:21  
Dominik
Gast
 
Beiträge: n/a
Standard

Naja mach doch einfach ne Überprüfung mit fsockopen ob deine Seite online ist, wenn ja dann machst du das LOADHTML
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
debuggen von DOMDocument unter eclipse belphegor Off-Topic Diskussionen 1 20.10.2009 22:13
DomDocument removeChild ? alex999 PHP Tipps 2009 6 05.10.2009 18:40
[Erledigt] DOMDocument expects at least 1 parameter... iXtends PHP Tipps 2009 3 30.07.2009 21:01
Problem mit DOMDocument rawibu PHP-Fortgeschrittene 6 29.05.2009 11:31
Parsen mit DOMDocument Neuling08 PHP Tipps 2008 2 28.12.2008 15:57
DOMDocument erstellen ohne DocInfo robert PHP Tipps 2008 6 12.11.2008 12:47
PHP5: DOMDocument + vererbung Syntaxx PHP-Fortgeschrittene 4 07.06.2006 09:02
new DOMDocument() schlägt fehl PHP Tipps 2006 0 04.02.2006 15:21

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php domdocument, domdocument php, php xml domdocument, domdocument.php, dom document php, php dom document, php domdocument attribute, domdocument leer, var_dump domdocument, php domdocument(), domdocument() php, php var_dump domdocument, php domdocument timeout, domdocument, domdocument html, object(domdocument)#1 (0) { }, php mehrfachvererbung domnode, dom::document php, php loadhtmlfile, php domdocument ist leer

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:33 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum