html head-tags in php?

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

  • html head-tags in php?

    hallo,

    ist zwar zur hälfte eine html-frage,
    trotzdem:

    habe tabellenfelder, in welchen der inhalt über eine variable
    ausgetauscht wird, mit readfile oder include von
    sowohl text- als auch html-dateien

    bei .txt kein problem, aber bei .html werden natürlich auch
    alle head-tags eingebunden.

    ist ja bei den ie oder ns4 kein problem, aber schön ists auch nicht.
    und suchmaschinen stehen plötzlich vor einem neuen <html>
    innerhalb der seite...

    also: gibts eine möglichkeit ausser fopen mit stringauslese,
    oder meint ihr ist wurscht mit den tags?

    auf die einzubindenden dateien habe ich keinen einfluss, drum...

  • #2
    BAHNHOF

    was genau machst du?
    kannst du das mal bitte anhand von beispielen, die man schnell nachvollziehen kann, erklären.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      include

      sorry

      in der ausgabedatei index.php steht in einer table:

      PHP-Code:
      readfile($buehne); 
      $buehne wird definiert in inhalte.inc,
      und kann sowohl eine html als auch eine txtdatei sein:

      PHP-Code:
      $analyse =  preg_split("/[-\.]/"$url);
      $inhalt $analyse[0].".txt";
      $name $analyse[0];
      if (
      $analyse[0]=="index"){
      $buehne "start.htm"
      oje, das führt zu weit...
      will nur sagen dass beide dateiformate vorkommen können
      und bei html alle body, head usw. tags mit eingebunden werden.

      Kommentar


      • #4
        und:

        jetzt könnte ich also prüfen, ob $buehne eine text - oder html
        datei ist, und bei letzterem mit array und stringabfrage nur den teil zwischen <body> </body> auslesen,
        und genau das wollte ich mir sparen.

        oder mach ich einen denkfehler?

        Kommentar


        • #5
          Re: und:

          mein vorschlag:

          datei in eine variable einlesen.
          mit einer regex alles aus der variable auslesen, was zwischen <body> und </body> steht.

          wenn dies jetzt gar nichts zurückgibt, dann war wohl auch kein <body>...</body> in der datei drin, dann kannst du den gesamten variableninhalt so ausgeben.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            ok

            ok,
            soweit klar,
            obwohl ich mir diese arbeit sparen wollte


            aber was hast du für erfahrungen mit den head tags innerhalb
            der seite, wenn ich einige php-seiten anschaue scheint denen das ziemlich wurscht zu sein?

            Kommentar


            • #7
              Re: ok

              Original geschrieben von mata
              aber was hast du für erfahrungen mit den head tags innerhalb der seite, wenn ich einige php-seiten anschaue scheint denen das ziemlich wurscht zu sein?
              keine, weil ich versuche valides html zu schreiben.
              und das könnte man mit solchen 'verschmutzungen' sofort vergessen.

              und ob's anderen wurscht ist ob es in den gängigen browsern trotzdem funzt ist mir wiederum wurscht - ich versuche mich an die standards zu halten, und nicht nach dem motto 'hauptsache es funzt' zu coden.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                jo

                bin ja auch ein ordentlicher mensch.

                bastle grade an ner abfrage mittels implode und substr....
                bloss blöd wenn der <body> tag auch mal <body bgcolor="#FFFFFF">
                heisst...

                na, mal sehn

                Kommentar


                • #9
                  pregs sind doch nicht so schwer ...

                  ... wenn man sich einmal durch die Syntax geknabbert und ein paar Sachen ausprobiert hat.

                  wahsaga´s Idee ist schon die einfachste ... man nehme sich den Befehl preg_match, schmökere ein wenig in der PCRE (Perl Compatible Regular Expressions) Pattern Syntax, gucke sich die Pattern Modifiers U, i und m an und probiere ein wenig herum ...
                  dann kommt so was in der Art raus:
                  PHP-Code:
                  if (preg_match('%<body.*>(.*)</body>%Ui'$text$match))
                    
                  $text $match[1];
                  else
                    
                  $text htmlentities($text); 
                  aufgedröselt:
                  %: Delimiter, markieren Anfang und Ende des eigentlichen Ausdrucks
                  () = runde Klammern: begrenzen einen Teilausdruck (subpattern), der später als eigenes Element im Array $match steht ... $match[0] entspricht dem Treffer für den kompletten Ausdruck.
                  . = Punkt: steht für ein beliebiges Zeichen (aber nur wegen des Modifiers m)
                  * Stern (einer der Quantifier): das davor stehende Zeichen kann mindestens 0 mal, darf aber beliebig oft vorkommen

                  Modifier: stehen hinter dem Ende des Ausdrucks
                  Modifier i: case-insensitive (keine Unterscheidung zwischen Groß- und Kleinschreibung)
                  Modifier U: sorgt dafür, dass preg_match "ungierig" wird - sonst schnappt sich <body.*> möglicherweise alles vom Öffnen des body-Tags bis zum letzten Tag, dass vor dem </body> steht.
                  Modifier m: auch Zeilenumbrüche werden als "beliebiges Zeichen" anerkannt

                  Damit bekommst du mit (.*) alles was zwischen <body ...> und </body> als erstes Submatch ...


                  Die if-Abfrage drumherum sorgt dafür, dass der Kram nur ausgeschnitten wird, wenn das body-Tag tatsächlich im Text drin ist. (Ansonsten wäre $match[0] nämlich nicht gesetzt; und damit würde dein Text gelöscht.)
                  mein Sport: mein Frühstück: meine Arbeit:

                  Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                  Kommentar


                  • #10
                    thx, sehr ausführlich...
                    keine ausrede mehr, sich um reg_ex zu drücken

                    gestern zu später stunde hats leider nicht funktioniert,
                    und, viel schlimmer, heut auch nicht.

                    zur fehlersuch habe ich das ganze folgendermassen reduziert
                    PHP-Code:
                    $buehne "start.htm";
                    $quelle = (file_exists($buehne)?implode('',file($buehne)):'');
                        if (
                    preg_match("%<body.*>(.*)</body>%Ui"$quelle)){
                        echo 
                    "body tags enthaltn";
                        } else {
                        echo 
                    "body tags enthaltn, aber skript funktioniert nicht";
                    echo 
                    $quelle;
                        } 
                    ohne den fehler zu finden

                    in start.htm sind body-tags, trotzdem kommt immer die zweite meldung, zur kontrolle nochmals $quelle am ende, die datei wird
                    korrekt angezeigt ( natürlich inkl. <body>)

                    was mach ich falsch?

                    Kommentar


                    • #11
                      escape mal die < .... also \<

                      if (preg_match("%\<body.*\>(.*)\</body\>%Ui", $quelle)){

                      damit sollte es klappen. das forum schluckt teilweise die \ in der php-darstellung.
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        PHP-Code:
                            $buehne "start.htm";
                            
                        $quelle = (file_exists($buehne)?implode('',file($buehne)):'');
                            if (
                        preg_match('%\<body.*\>(.*)\</body\>%Ui'$quelle)){
                            echo 
                        "body tags enthaltn";
                            } else {
                            echo 
                        "body tags enthaltn, aber skript funktioniert nicht";
                            echo 
                        $quelle;
                            } 
                        ich denke auch, es sollte, tuts aber nicht.
                        an start.htm liegts nicht, hab grad mit anderer datei
                        getestet.
                        ratlos

                        Kommentar


                        • #13
                          $buehne = "start.htm";
                          $quelle = (file_exists($buehne)?implode('',file($buehne)):'');
                          if (preg_match('%\<body.*\>(.*)\</body\>%Ui', $quelle)){

                          sieht man ja sonst nicht, escapes sind aber da

                          Kommentar


                          • #14
                            nochmal reg_ex und inside &lt;body&gt;

                            also, habs jetzt zwar hinbekommen, aber mehr so
                            mit viel dusel. mit der syntax vo reg-expressions haperts
                            noch ein wenig, trotz der super erklärung von Titus... danke nochmal

                            hier meine variante zum includen von html seiten innerhalb
                            einer tabelle (also nur <body> inhalt:
                            PHP-Code:
                            $buehne "start.htm";
                                
                            $quelle = (file_exists($buehne)?implode('',file($buehne)):'');
                                
                            preg_match_all("=\<body[^\>]*\>(.*)\</body\>=siU"$quelle$body);
                                echo 
                            $body[1][0]; 
                            die titus-variante

                            PHP-Code:
                            if (preg_match('%\<body.*\>(.*)\</body\>%Ui'$text$match))
                              
                            $text $match[1];
                            else
                              
                            $text htmlentities($text); 
                            läuft bei mir nicht, und ich kapier nicht warum.

                            wie gesagt, ersteres geht ja nu, würde trotzdem gern zugunsten lerneffekt wissen warum 2. nicht

                            Kommentar


                            • #15
                              @mata
                              du brauchst dafür nicht einen neuen post aufmachen. es geht um das gleiche problem. also schreibt man da auch weiter....
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Kommentar

                              Lädt...
                              X