Ankündigung

Einklappen
Keine Ankündigung bisher.

Suche von HTML Attributes in bestimmten Tags mit PHP

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Suche von HTML Attributes in bestimmten Tags mit PHP

    Hallo zusammen,

    Ich bin ganz neu hier im Forum. Ich bin von eurem Partnerforum Winhilfe.ch(dort bin ich Newsmoderator) hierher gekommen und habe schon mein erstes Problem.
    Mit diesem PHP-Script suche ich in einer bestimmten HTML datei die zuvor angegeben wurde beliebige Tags aus:
    PHP-Code:
    function htmltagsearch ($content$tag) {
    $thetag = Array();
    for (
    $nr 0$nr strlen($content); $nr++) {
    $tagbeginn stripos($content"<$tag"$nr);
    if(!
    $tagbeginn === FALSE) {
    $nr $tagbeginn;
    $tagend stripos($content">"$tagbeginn);
    $lenght $tagend-$tagbeginn;
    $thistag substr($content$tagbeginn$lenght+1);
    array_push($thetag$thistag);
    }
    }
    return 
    $thetag;

    Nun bin ich bei dem Script ein bisschen am weiterbasteln und möchte gerne auch noch den Inhalt in ausgewählten Attributes auswerten. Ich dachte das müsste so gehen:
    PHP-Code:
    function htmlattributesearch ($content$tag$attribute) {
    $thetag = Array();
    for (
    $nr 0$nr strlen($content); $nr++) {
    $tagbeginn stripos($content"<$tag"$nr);
    $attributebeginn stripos($content"$attribute=\""$tagbeginn);
    if(!
    $attributebeginn === FALSE) {
    $nr $attributebeginn;
    $tagend stripos($content">"$tagbeginn);
    $attributeend stripos($content"\""$attributebeginn);
    $lenght $attributeend-$attributebeginn-strlen($attribute)-3;
    $thistag substr($content$attributebeginn$lenght+1);
    array_push($thetag$thistag);
    }
    }
    return 
    $thetag;

    Aber irgendwie gibt mir mein Server folgende Meldung aus:
    Code:
    Fatal error: Allowed memory size of 52428800 bytes exhausted (tried to allocate 82407 bytes) in D:\www\www696\WebEye\optimizehandy.php on line 36
    Irgendwie finde ich den Fehler im Code einfach nicht. Könnte mir jemand sagen was da schief läuft? Ich bin über jede Antwort sehr dankbar.

    Mit freundlichen Grüssen
    [ASTERIX]

    PS: Bin mit meinen 11 Jahren noch eher PHP-Anfänger, darum bitte eine möglichst einfache Antwort.

  • #2
    AW: Suche von HTML Attributes in bestimmten Tags mit PHP

    Also für mich siehts nach ner Überschreitung des memor_limit in der php.ini aus, da dein Script wohl ein wenig rechenintensiv ist. Warum versuchst du es nicht mit preg_match?

    Kommentar


    • #3
      AW: Suche von HTML Attributes in bestimmten Tags mit PHP

      Probiers mal mit DOM. Da gibt die nette Funktion "getElementsByTagName".

      PHP-Code:
      <?php
      $document 
      = new DOMDocument();
      $document->loadHTML("htmlcode");
      $nodelist $document->getElementsByTagName("name");
      //nodelist abarbeiten
      ?>
      Man kann auch damit Attribute lesen. Ist denk ich einfacher.

      //edit: Ich glaub für diese Version brauchst du PHP5, es gibt aber eine PHP4-Alternative

      Kommentar


      • #4
        AW: Suche von HTML Attributes in bestimmten Tags mit PHP

        hi,

        php hat ein internes memorylimit und das hast du verbraucht. das bedeutet, du musst deinen code optimieren.

        PHP-Code:
        for ($nr 0$nr strlen($content); $nr++) { 
        hier wird zum beispiel bei jedem schleifendurchgang strlen($content) aufgerufen. kann bei großen dateien sehr lange dauern...

        ansonsten arbeite mit den return werten von strpos usw.
        ich habs nicht ausprobiert, aber so in etwas sollte das aussehen:


        PHP-Code:
        function htmlattributesearch ($content$tag$attribute)
        {
            
        $thetag = Array();

            
        $tagbeginn=stripos($content'<'.$tag$nr);
            
        $attributebeginn=stripos($content$attribute.'='$tagbeginn); 

            while(
        $tagbeginn!==FALSE)
            {
                
        $attributeend=stripos($content'"'$attributebeginn); 
                
        $tagend stripos($content'>'$tagbeginn);
                
        $lenght=$attributeend-$attributebeginn-strlen($attribute)-3
                
        $thetag[]=substr($content,$attributebeginn,$lenght+1);

                
        $tagbeginn=stripos($content'<'.$tag$nr);
                
        $attributebeginn=stripos($content$attribute.'='$tagbeginn); 
            }

            return 
        $thetag;

        falls das auch nicht klappt, musst dus komplett anders machen. dann nämlich musst du den speicher sauberhalten, also nach jedem fund alles vor dem fund und den fund selbst aus $content löschen und dann weitermachen.

        p.s:

        PHP-Code:
        if(!$attributebeginn === FALSE) { 
        da musst ich dreimal hinschauen. warum so schwer machen?

        PHP-Code:
        if($attributebeginn !== FALSE) { 
        Zuletzt geändert von Brian; 20.10.2007, 20:12.
        AC/DC Fanpage www.ifyouwantblood.de
        Nein zur Zensur im Internet und anderswo - Anonymous

        Kommentar


        • #5
          AW: Suche von HTML Attributes in bestimmten Tags mit PHP

          Vielen Dank für die vielen antworten! Werde, wenn ich Zeit habe die mal durchprobieren. Jetzt habe ich die leider gerade nicht. Bis später.


          Edit (autom. Beitragszusammenführung):

          Danke nochmals für die Antworten! Besonders die letzte von Brian hat mir gefallen(sorry an alle anderen). Denn ich möchte das ganze am liebsten selbst programmieren(da lern ich auch bisschen mehr dazu). Ich hab die Lösung von dir, Brian, ausprobiert doch anscheinend benutzt das ganze immer noch zu viel Memory...

          Wie würde man dass mit dem aus dem speicher löschen anstellen? Ich währ sehr dankbar für eine Antwort!

          MFG
          [ASTERIX]
          Zuletzt geändert von andre.roesti; 21.10.2007, 17:01. Grund: Antwort auf eigenen Beitrag innerhalb von 24 Stunden!

          Kommentar

          homepage-forum.de - Hilfe für Webmaster! Statistiken

          Einklappen

          Themen: 57.205   Beiträge: 432.331   Mitglieder: 29.599   Aktive Mitglieder: 48
          Willkommen an unser neuestes Mitglied, Drausi.

          Online-Benutzer

          Einklappen

          623 Benutzer sind jetzt online. Registrierte Benutzer: 4, Gäste: 619.

          Mit 4.707 Benutzern waren am 12.01.2023 um 03:07 die meisten Benutzer gleichzeitig online.

          Die neuesten Themen

          Einklappen

          Die neuesten Beiträge

          Einklappen

          Lädt...
          X