HTML-Tags lesen und bearbeiten
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
absolut falsche ansatz
artikel
auslese
button
code
datei
dokument
dom
erstellen
gedanke
http
inhalt
klasse
manual
nutzen
problem
semantischer fehler
tabelle
tauchen
url
-
Hallo Community,
inspiriert von oruam19's Beitrag https://www.lima-city.de/thread/semantischer-fehler-in-einem-php-skript
habe ich einen Artikel/Tutorial verfasst Im Forum tauchen immer mal wieder Fragen auf wie HTML-Tags via PHP ausgelesen bzw. bearbeitet werden können. Eine Antwort könnt ihr auf meiner noch Baustellehttps://timebandit.lima-city.de/php/tabelle.php finden.
Dort werden exemplarisch HTML-Tabellen ausgelesen und modifiziert.,
mfg timebandit
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
muellerlukas schrieb:
Warum denn überhaupt mit explode/implode was zusammen würfeln anstatt die PHP-DOM-Klassen zu nutzen? Die sind schließlich für das Lesen/Erstellen/Verändern von HTML- und XML-Dokumenten gedacht.
https://secure.php.net/manual/de/book.dom.php
Ganz einfach, DOM ist Overhead Central. Da ist man mit REGEX and klassischen str_replace() weitaus besser bedient. Wesentlich flexibler und weniger Overhead wenn man sich die Zeit nimmt das ganze richtig zusammen zu tüfteln.
Wo Du aber auf jeden Fall recht hast, das explode/implode der absolut falsche ansatz ist. -
Beim Overhead hast du auf jeden Fall recht. Dürfte aber bei dem Nutzen recht vernachlässigbar sein.
Beim Thema Flexibilität bist du mit DOM auf jeden Fall besser bedient als mit Regechsen und preg_replace. Z.B. dank xpath. -
strange schrieb:
Ganz einfach, DOM ist Overhead Central. Da ist man mit REGEX and klassischen str_replace() weitaus besser bedient. Wesentlich flexibler und weniger Overhead wenn man sich die Zeit nimmt das ganze richtig zusammen zu tüfteln.
Wo Du aber auf jeden Fall recht hast, das explode/implode der absolut falsche ansatz ist.
In oruam19's Beitrag 'semantischer-fehler-in-einem-php-skript' habe ich mich auch gegen explode und implode ausgesprochen und für eine andere Lösung plädiert. Das Thema beschäftigte mich aber weiterhin. Der erste Gedanke war natürlich preg_match und/oder preg_match_all zu verwenden. Das Problem ist aber nicht Buttons in <td>-Tags zu quetschen, sondern die Buttons interaktiv mit der jeweils richtigen URL zu versehen. Genau da versagen REGEX. str_replace(), substr_replace, etc...
Auch DOM löst das Problem nicht zufriedenstellend. Neben dem Overhead müsste auch die Nodelist die alle <td>-Tags beinhaltet, weiterverarbeitet werden.Die relevanten Werte(URL) müssen den entsprechenden <button>-Tags, die an der richtigen Stelle zu plazieren sind, übergeben werden.Was ich für fehleranfällig halte.
Kurz. Ich fiel auf das vorher von mir verteufelte explode zurück. Mit geeigneten Delimitern erhält man übersichtliche Arrays, die leicht und vorallem fehlerfrei bearbeitet werden können. Die Fahrpläne sind Original zweisprachig aus der Stadt Biel in der Schweiz. In meinem Artikel geht es im Kern um eben diese Fahrplantabelle. Aus didaktischen Gründen habe ich anfangs zwei einfachere Tabellen und explode(), implode() verwendet.
Mindestens Beispiel 1 läßt sich mit REGEX. str_replace() oder besser mit strpos() und str_replace() einfacher lösen. -
Hallo
um HTML zu in eine Variable zu Lesen gibt es DOMDocument();
// ----- Datei-Quelle --- XML oder HTML ---- $file_name = 'test1.'html'; $xmlDoc = new DOMDocument(); $xmlDoc->load($file_name); // ----- Ausgabe --- XML ---- $out_xml = $xmlDoc->saveXML(); print '<pre>'."\n"; print $out_xml; print '</pre>'."\n"; // -------------------
Allgemeine infos hier : http://php.net/manual/de/class.domdocument.php
.... zum Ein-Lesen von HTML (oder XML) in eine PHP Variable ist das sehr hilfreich: :
siehe dazu ...... DOMDocument->loadHTML()
oder nur XML ...... DOMDocument->loadXML()
bzw von Datei: .... DOMDocument->loadHTMLFile()
... viel Erfolg !
:)
Beitrag zuletzt geändert: 16.6.2018 12:48:02 von clixtools -
Hallo
wie wäre es mit xPath
aus HTML Datei oder direkt aus DOM Element
mit einem xPath nach TAGs oder IDs "suchen"
oder nach CSS Klassen, usw ..... die Möglichkeiten sind vielfältig
mit xPath werden meist mehrere Ergebnisse kommen (NodeList)
BSP:
// ----------------------------------------- $file_name = 'about.xml'; $xpath_strg = '/div[@id="name"]'; // ----- xPath ----- // -------------------------------- $xml = new DOMDocument; $xml->preserveWhiteSpace = false; $xml->Load($file_name); $xq_xpath = new DOMXPath($xml); $res_nodelist = $xq_xpath->query($xpath_strg);
mit einem xPath Query kann man aus HTML einfach Inhalte wie Tabellen, etc. auslesen
und bekommt eine NodeList zum in PHP weiter verarbeiten (Loop Items / Children)
-
Ich möchte in diesem Zusammenhang auch noch simple_html_dom erwähnen. Auch X-Path fähig! http://simplehtmldom.sourceforge.net/
LG
Beitrag zuletzt geändert: 29.6.2018 16:24:18 von buergerforum -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage