kostenloser Webspace werbefrei: lima-city


HTML-Tags lesen und bearbeiten

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    timebandit

    timebandit hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
  4. 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.
  5. 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.
  6. Autor dieses Themas

    timebandit

    timebandit hat kostenlosen Webspace.

    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.
  7. 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
  8. 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)

    :prost:

  9. b**********m

    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
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!