Sanny: Inhalt von <h1> ausgeben..

Hallo,

ich möchte gerne den Inhalt von h1 ausgeben.
Bis jetzt erreiche ich mit

echo strip_tags(stristr($dokument, '<h1>'));

, dass das ganze Dokument, bereinigt seiner Tags, ab der h1 ausgegeben wird.

Wenn ich nun aber versuche, den String bei "</h1>" wieder abzuschneiden:

echo strip_tags(stristr(stristr($dokument, '<h1>'), '</h1>', true));

, (das versuche ich laut http://us2.php.net/manual/en/function.stristr.php auf die gleiche Weise, nur dass ich als zusätzlichen Parameter "true" für "gebe den String VOR </h1> aus" verwende), dann kommt die Warnung:

Warning: Wrong parameter count for stristr() in /hp/aa/aa/tz/www/sternwerfer/slideshow.php on line 33

Was mache ich falsch?

Danke! LG, Sanny

  1. Was mache ich falsch?

    Du verwendest die falsche PHP-Version - der dritte Parameter für strstr() oder stristr() ist nicht in jeder PHP-Version enthalte.

    Du kannst die Funktion aber mit strpos() und substr() nachbauen

    Natürlich kannst du für diese aufgabe auch einen regulären Ausdruck verwenden - preg_match() wäre dann das Mittel der Wahl.

    1. Hallo suit,

      echo strtolower(trim(' WINK MIT DEM ZAUNPFAHL INZWISCHEN VERSTANDEN! '));

      ..ich weiss nicht warum, aber irgendwie hab ich es überlesen. Seltsam. Sorry. Und Danke trotzdem!

      Sanny

  2. Hi,

    Was mache ich falsch?

    Du benutzt ein PHP vor Version 5.3.0.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo,

      Ihr beide habt recht. Das habe ich im php-Manual überlesen. Aber wie kann man dann mit einer älteren php-Version einen String VOR einem bestimmten Punkt ausgeben? Ich habe mir da schon einige Funktionen angesehen und komme da auf keinen grünen Zweig.

      LG, Sanny

      Hi,

      Was mache ich falsch?

      Du benutzt ein PHP vor Version 5.3.0.

      Cheatah

      1. Das habe ich im php-Manual überlesen.

        Ein Problem, das bei dir scheinbar immer noch auftritt :)

        Aber wie kann man dann mit einer älteren php-Version einen String VOR einem bestimmten Punkt ausgeben? Ich habe mir da schon einige Funktionen angesehen und komme da auf keinen grünen Zweig.

        Siehe oben.

        1. Das habe ich im php-Manual überlesen.

          Ein Problem, das bei dir scheinbar immer noch auftritt :)

          <wink type="zaunpfahl">  
            Es tritt allgemein (auch hier im Forum) auf, nicht nur in der PHP-Dokumentation :)  
          </wink>
          
          1. Hallo Allerseits,

            Für den php-Anfänger, der diesen Thread auf der Suche nach Antworten ergoogelt- ich hab die Lösung inzwischen rausgefunden. Im folgenden kleinen Skript wird der Inhalt der obersten H1 der aktuellen Seiten ausgegeben:

              
            <?php  
            				  
            $filename = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];  // das File greift auf sich selbst zu  
              
            $fp = fopen($filename, "r+");   // öffne das File mit bestimmten Rechten  
            $dok = fread($fp, filesize($filename));  // und lese es ein  
              
              
            $a = stristr($dok, '<h'.'1>');   // Das ganze File ab H 1. Der Tag wird so geschrieben, weil das File auf sich selbst zugreift und deshalb ansonsten dieses "H 1" als oberstes "H 1" erkennen würde  
            $b = stristr($dok, '</h'.'1>');  // Das ganze File ab /H 1.  
              
            $dok = str_replace($b, '', $a);  // a minus b, sozusagen  
            $dok = trim(strip_tags($dok));  // irgendwie hauts in den Quellcode haufenweise Leerzeichen und ein Enter, die werden hier und in den folgenden Zeilen noch rausgenommen (wahrscheinlich völlig schlecht programmiert)  
            $dok = str_replace('  ', '', $dok);  
            $dok = str_replace('  
            ', '', $dok);  
              
            echo $dok;  
              
            	   ?>  
            
            

            LG, Sanny

            1. Für den php-Anfänger, der diesen Thread auf der Suche nach Antworten ergoogelt- ich hab die Lösung inzwischen rausgefunden. Im folgenden kleinen Skript wird der Inhalt der obersten H1 der aktuellen Seiten ausgegeben:

              Für PHP-Anfänge empfehle ich dann doch die vorgeschlagene Variante mit strpos() und substr(), da sie wesentlich kürzer ist - deine Variante scheint mir nicht sehr ressourcenschonend zu sein :)

              Oder aber mit preg_match() - der elegante Weg:

              $pattern = '/<h1>(.*)<\/h1>/iU';  
              $subject = 'foo <h1>bar</h1> baz <h1>qux</h1> quux';  
                
              preg_match($pattern, $subject, $matches);  
                
              echo $matches[0] . "\n"; //  enthält den kompletten Ausdruck - also "<h1>bar</h1>"  
              echo $matches[1];        // enthält den ersten subpattern, also "foo"
              

              Erklärung zum Suchmuster:
              // = Begrenzer für das Muster
              .  = beliebiges zeichen
              +  = mindesten 1x, aber beliebig oft
              () = Unter-Muster welches gespeichert wird
              i  = case-insensitve
              U  = nicht gierig

              Wörtlich:
              finde <h1> (bzw. auch H1  weil ja 'i' gesetzt ist) und speichere eine belibige Zeichenkette bis zum unmittelbar nächsten auftreten (wegen des 'U'-Modifikators) von </h1>.

              Ohne den Modifikator U kann es aufgrund der Gierigkeit dazu führen, dass "bar</h1> baz <h1>qux" gefunden würde.

              Wenn man alle h1-Elemente haben möchte kann man natürlich auch preg_match_all() verwenden.

              1. Für PHP-Anfänge empfehle ich dann doch die vorgeschlagene Variante mit strpos() und substr(), da sie wesentlich kürzer ist - deine Variante scheint mir nicht sehr ressourcenschonend zu sein :)

                Hallo suit,

                nee, ressourcenschonend ist der Code gar nicht! :)

                ...... :(

                Ist mir im Nachhinein auch aufgefallen. Ich werde es jetzt erstmal lassen (der Quelltext der einzelnen Seiten ist ZIEMLICH kurz) und meinem Chef vorschlagen, dass er mich möglichst früh an die Umsetzung von deiner Lösung läßt.

                Danke!!
                LG, Sanny

                1. Hallo

                  Ist mir im Nachhinein auch aufgefallen. Ich werde es jetzt erstmal lassen (der Quelltext der einzelnen Seiten ist ZIEMLICH kurz) und meinem Chef vorschlagen, dass er mich möglichst früh an die Umsetzung von deiner Lösung läßt.

                  Und das mit ohne "von". *scnr*

                  Tschö, Auge

                  --
                  Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                  Terry Pratchett, "Wachen! Wachen!"
                  Veranstaltungsdatenbank Vdb 0.3
                  1. Ist mir im Nachhinein auch aufgefallen. Ich werde es jetzt erstmal lassen (der Quelltext der einzelnen Seiten ist ZIEMLICH kurz) und meinem Chef vorschlagen, dass er mich möglichst früh an die Umsetzung von deiner Lösung läßt.

                    Und das mit ohne "von". *scnr*

                    Kommt darauf an...
                    "die Umsetzung von <em>deiner Lösung</em>"
                    Wer da empfindlich reagiert, ist gewiss kein Schweizer.

                    mfg Beat

                    --
                    ><o(((°>           ><o(((°>
                       <°)))o><                     ><o(((°>o
                    Der Valigator leibt diese Fische
                    1. Hallo

                      ... und meinem Chef vorschlagen, dass er mich möglichst früh an die Umsetzung von deiner Lösung läßt.

                      Und das mit ohne "von". *scnr*

                      Kommt darauf an...
                      "die Umsetzung von <em>deiner Lösung</em>"
                      Wer da empfindlich reagiert, ist gewiss kein Schweizer.

                      Stimmt. :-)

                      Nach meinem Sprachempfinden ist es halt "die Umsetzung deiner Lösung".

                      Aba is ja Wurscht.

                      Tschö, Auge

                      --
                      Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                      Terry Pratchett, "Wachen! Wachen!"
                      Veranstaltungsdatenbank Vdb 0.3