php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  #16 (permalink)  
Alt 28-12-2012, 20:29
newbie1955
 Registrierter Benutzer
Links : Onlinestatus : newbie1955 ist offline
Registriert seit: Dec 2012
Beiträge: 241
newbie1955 befindet sich auf einem aufstrebenden Ast
Standard

Einen? ich habe mehrere versucht: Der vielversprechendste schien mir der hier zu sein, aber Irrtum. Kann es sein, dass es daran liegt, dass zwischen h1 und a Leerstellen sind?

PHP-Code:
foreach ($xPath->query('//h1/a') as $element
{
     
$hreft $element->getAttribute('href');
     
$title $element->getAttribute('title'); 
Die Irrtümer mit h1 als tagname brauche ich hier ja nicht noch mal aufzulisten.

DAS hier war erfolgreich, soweit es class="bd" betrifft, aber mit h1 eben nicht.

PHP-Code:
foreach( $xpath->query('//div[contains(attribute::class, "bd")]') as $e ) { 

 echo 
$e $e->nodeValue"<br />\n"
Erfolglos war auch als Ergänzung zum eben Genannten (in der Absicht, den title von <a zu bekommen:

PHP-Code:
foreach( $xpath->query('//div[contains(attribute::class, "bd")]') as $e ) { 

$title $e->firstChild->nodeValue;
echo 
"Titel: <br>";
echo 
$title
echo 
"<br>";
 echo 
$e $e->nodeValue"<br />\n"
Mein Problem ist dass ich die $xpath->query-Syntax noch nicht ganz kapiere. Also wie man zum Beispiel fragt: Hole mir den A-tag nach jeder class="h1".

Gruß
newbie1955
P.S. Hier noch mal der auszulesende Quelltext:
HTML-Code:
<div class="bd">
        <div class="hl">
                                    <a href="http://www.testseite/...../hgv-laedt-erstmals-zum-neujahrsempfang-nach-lengede-ein-id843449.html" title="HGV lädt 
erstmals zum 
Neujahrsempfang 
nach Lengede ein" >HGV lädt  erstmals zum  Neujahrsempfang  nach Lengede ein</a>
                                        </div><div class="txt">
                                        <span class="loc">Lengede</span>
<a href="http://www.testseite.de/...../hgv-laedt-erstmals-zum-neujahrsempfang-nach-lengede-ein-id843449.html" title="HGV lädt 
erstmals zum 
Neujahrsempfang 
nach Lengede ein" >Der Handels- und Gewerbeverein (HGV) Lengede will am 6. Januar „alle“ Gewerbetreibenden der Gemeinde für einen...</a>
                                    </div></div>
                    </div>
Hier wird auf meiner Seite dann der Wert von "title" aus der class "txt" ausgegeben. Ich will aber, wie gesagt, den title und href des a-tags nach "h1"

Geändert von newbie1955 (28-12-2012 um 20:36 Uhr)
Mit Zitat antworten
  #17 (permalink)  
Alt 28-12-2012, 20:39
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Zitat:
Zitat von newbie1955 Beitrag anzeigen
Mein Problem ist dass ich die $xpath->query-Syntax noch nicht ganz kapiere. Also wie man zum Beispiel fragt: Hole mir den A-tag nach jeder class="h1".
ungetestet:
PHP-Code:
$xPath->query('//div[@class="h1"]//a'
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
Mit Zitat antworten
  #18 (permalink)  
Alt 28-12-2012, 21:28
newbie1955
 Registrierter Benutzer
Links : Onlinestatus : newbie1955 ist offline
Registriert seit: Dec 2012
Beiträge: 241
newbie1955 befindet sich auf einem aufstrebenden Ast
Standard Leider

Zitat:
Zitat von Quetschi Beitrag anzeigen
ungetestet:
PHP-Code:
$xPath->query('//div[@class="h1"]//a'
Danke für den Versuch, hat aber leider kein Ergebnis gebracht. Weder wenn ich den nodeValue auszugeben versuche noch wenn ich mir mit
PHP-Code:
getAttribute('href'); 
oder title zu holen versuche.

Wenn ich dasselbe mit class="bd" statt mit "h1" versuche bringt es auch nur wieder das bekannte bd-Ergebnis. Bedeutet denn "//" nächste "Verwandschaftsebene"?

Gruß newbie1955
Mit Zitat antworten
  #19 (permalink)  
Alt 28-12-2012, 21:45
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

PHP-Code:
"h1" != "hl" 
Zitat:
Zitat von newbie1955 Beitrag anzeigen
Bedeutet denn "//" nächste "Verwandschaftsebene"?
PHP-Code:
<div class="bd">
    <div class="hl">
        <p>
            <a href="http://www.testseite/Link1.html" title="Titel von Link1">Link1</a>
        </p>
        <a href="http://www.testseite/Link2.html" title="Titel von Link2">Link2</a>
    </div>
</div>
<?php

//Finde alle a-Tags, die direkter Nachfahre von div-Tag mit der Klasse 'hl' sind
$xPath->query('//div[@class="h1"]/a');

//Finde alle a-Tags, unterhalb von div-Tag mit der Klasse 'hl' - egal wie tief verschachtelt
$xPath->query('//div[@class="h1"]//a');


?>
Für alles weitere zur Formulierung von xPath-Abfragen siehst du aber bitte nun erst einmal selbst auf der verlinkten Seite von Selfhtml nach - da wäre die Frage, die du eben gestellt hast schon beantwortet.
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

Geändert von Quetschi (28-12-2012 um 21:59 Uhr)
Mit Zitat antworten
  #20 (permalink)  
Alt 28-12-2012, 22:20
newbie1955
 Registrierter Benutzer
Links : Onlinestatus : newbie1955 ist offline
Registriert seit: Dec 2012
Beiträge: 241
newbie1955 befindet sich auf einem aufstrebenden Ast
Standard

Danke noch mal für die Erklärung, aber sorry, wieso kommt denn dann nix mit der von Dir ungetesteten und von mir getesteten Abfrage
PHP-Code:
$xPath->query('//div[@class="h1"]//a'); 
, mit der ich es versucht habe. Es ist doch ein a-tag nach "h1"-Div?

Und nochmal sorry, was bedeutet Dein Code
PHP-Code:
"h1" != "hl" 
?

Ja, ich studiere ja selfhtml. Ich finde dort sind viele Angaben zur Konstruktion aber wenig Beispiele, wie konkrete XPath-Abfragen konstruiert werden, also schon mal so banale Sachen wie, wann man Eckige Klammern verwendet, wann runde. Also ich kapiere schon z. B. dass in meinem Fall div "bd" ein parent von div "h1" sein müsste, aber so etwas konkrete Fallbeispiele wie "Wenn Sie das abfragen wollen, machen Sie es z. B. so..."
So etwas findet man dann in Einzelfällen mal bei stackoverflow oder so und muss dann Rückschlüsse ziehen.

Gruß newbie1955
Was heißt
Drelingdo usw - ist das Deine Sprache-Erfindung?

Geändert von newbie1955 (28-12-2012 um 22:23 Uhr)
Mit Zitat antworten
  #21 (permalink)  
Alt 28-12-2012, 22:27
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von newbie1955 Beitrag anzeigen
Und nochmal sorry, was bedeutet Dein Code
PHP-Code:
"h1" != "hl" 
?
Das bedeutet, dass h1 und hl nicht dasselbe sind und du deshalb vergeblich nach der Klasse [klein H]+[Ziffer Eins] suchst, weil das div die Klasse [klein H]+[klein L] besitzt.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #22 (permalink)  
Alt 28-12-2012, 22:28
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Dein Html enthält ein div-Tag mit der Klasse 'hl' - ein 'h' gefolgt vom Buchstaben 'l'.

In der xPath-Query suchst du nach einem div-Tag mit der Klasse 'h1' - ein 'h' gefolgt von der Ziffer 1.




Finde es bei Selfhtml eigentlich sehr schön erklärt und Beispiele finden sich dort ja auch zu genüge.

Du bist nur auf die oft recht ähnliche Darstellung von l und 1 hereingefallen - deshalb waren deine Versuche erfolglos und die Doku wurde daher für dich als schwer nachvollziehbar empfunden.
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
Mit Zitat antworten
  #23 (permalink)  
Alt 28-12-2012, 22:31
newbie1955
 Registrierter Benutzer
Links : Onlinestatus : newbie1955 ist offline
Registriert seit: Dec 2012
Beiträge: 241
newbie1955 befindet sich auf einem aufstrebenden Ast
Standard

(Manchmal nützt auch die beste Brille nix)


Geändert von newbie1955 (28-12-2012 um 22:45 Uhr)
Mit Zitat antworten
  #24 (permalink)  
Alt 30-12-2012, 00:48
newbie1955
 Registrierter Benutzer
Links : Onlinestatus : newbie1955 ist offline
Registriert seit: Dec 2012
Beiträge: 241
newbie1955 befindet sich auf einem aufstrebenden Ast
Standard Erneutes Problem

...nun lief alles bestens, heute kommt wieder kein Inhalt und die Fehlermeldung:

Code:
Warning: DOMDocument::loadHTML(): ID blaa already defined in Entity, line: 791 in
und
Code:
Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line
Wat is denn dat nu wieder?
Gruß
newbie1955
Mit Zitat antworten
  #25 (permalink)  
Alt 30-12-2012, 01:15
ezkimo
 Registrierter Benutzer
Links : Onlinestatus : ezkimo ist offline
Registriert seit: Apr 2005
Ort: Beckum / Westf.
Beiträge: 279
ezkimo befindet sich auf einem aufstrebenden Ast
ezkimo eine Nachricht über ICQ schicken
Standard

Das sind Fehler in Deinem HTML Code bzw dem HTML Code, den Du zu parsen versuchst. Ein id-Attribut darf nur eindeutig in einem HTML Dokument erwähnt werden. Es darf keine zwei id-Attribute mit ein und dem selben Wert geben.

Entitäten sind in wohl formatierten HTML ebenfalls ein großartiges Thema. Ich schätze mal, dass ein & als solches in Deinem HTML Text steht. Derartige Sonderzeichen müssen aber maskiert, sprich als Entität dargestellt werden. Dann würde es auch richtig geparst werden.

Die DOM Funktionen setzen wohl formatiertes HTML / XML voraus. Du kannst aber mit den Eigenschaften von DomDocument einige dieser Warnings umgehen. Schau Dir hierzu die Klassenbeschreibung von DomDocument im Manual an. Eventuel ist das hier Deine Lösung: PHP: DOMDocument - Manual
__________________
MM Newmedia | MeinBlog
Mit Zitat antworten
  #26 (permalink)  
Alt 30-12-2012, 08:36
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

www.php.net/domdocument.loadhtml

Insbesondere der Abschnitt 'Errors/Exceptions'.
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
xpath dom


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Domain aus dom.org.uk und sub.dom.de extrahieren mgutt PHP Developer Forum 6 17-06-2009 17:51
XPath and @ darki777 XML 0 04-12-2006 18:37
XPath-Query Marcusson XML 2 27-07-2006 08:39
Neues (DOM-)XML Dokument nach XPath TomTom101 XML 5 17-06-2005 17:15
XPath-Function count mit PHP-DOM spraetor XML 2 05-08-2004 23:30

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:30 Uhr.