Eigene Seite auslesen und vorhandene h1 - h6 elemenete als titel tag anzeigen


basti1012

Erfahrenes Mitglied
Ich hoffe ihr versteht was ich meine , weil mein Goggeln nur Ergebnisse anzeigte wie man es mit Fremdseiten macht .
Zb über curl das h1 holen ist kein problem.
Doch ich denke das es auf eigenen Server nicht sinvoll ist.

Zum Problem.
Wenn man jetzt über meine Seiten surft lasse ich die url ( Datei Name ) als <title> Tag anzeigen.

Jetzt dachte ich mir das ich die Seite überprüfe ob es h1 - h6 Elemente gibt und die dann als Title anzeige.
Falls es mehre h1-h6 Elemente gibt würde ich die dann auch gerne in <meta name="description" content="hier rein"> anzeigen lassen.

Zur Zeit wird über include überall der gleiche head eingebunden ( auser title den lese ich vorher über url aus )
Jetzt dachte ich mir wo ich die url auslese das ich vorher die h1 - h6 Elemente checke und die dann wie oben beschrieben einfüge.

Ich kam jetzt auf die Idee das ich erst die Seite mit file_get_contents oder curl einlese und dann das auslese und einfüge.
Ich bezweifel das es der Falsche Weg ist , oder was meint ihr ?
Habt ihr andere Ideen das umzusetzten ?? ( kein JS ,kommt hier nicht in Frage für mich, obwohl es einfach wäre)
 

Yaslaw

n/a
Moderator
Ich versteh nicht ganz was du machen willst und sehe nicht, was du schon gemacht hast.

Aber, du kannst doch in jeder deiner Dateien am Anfang eine Variable namens title definieren und dann in der Headerdatei auslesen.
 

basti1012

Erfahrenes Mitglied
Gemacht habe ich noch nix sinvolles , weil ich noch nach den richtigen Weg suche.
Auf allen meiner Seiten ist der gleiche head eingebunden über Php include.
Ich könnte zwar auf jeder Seite eine Variable anlegen und dann einbinden .
Zb so
PHP:
<?php
$title="beschreibung zu der aktuellen Seite";
?>
<!doctype html>
<html lang="de">
<head>
<title><?php echo $title; ?></title>
</head>
usw...
So meintest du das doch auch oder ??

Da es zu viele Seiten sind wolte ich vorher die Seite auslesen und dann einfügen zb so

PHP:
<?php
$diese_seite=file_get_contents('link_zu_dieser_seite.html');
preg_match_all('%<h1>(.*)</h1>%Uis', $diese_seite,$h1_h6);
foreach ($h1_h6[1] as $row){
    $title=$row.;
}  
?>
<!doctype html>
<html lang="de">
<head>
<title><?php echo $title; ?></title>
</head>
usw...
Code kann jetzt Fehlerhaft sein weil freihand geschrieben.
Aber son ungefähr ( oder mit curl ) wird das ja auch klappen, nur meine Frage ist jetzt ob das der richtige weg ist , oder andere möglichkeiten dazu besser geeignet sind ?
Oder gibt es noch andere Wege die mir jetzt gerade nicht einfallen ?

Zb in diesen Beispiel würde jeder Seitenaufruf ja auch file_get_contents aufrufen und das ist performanc technisch ja auch nicht gerade sinvoll oder ?

Weiteren Code gibt es noch nicht weil ich erst den sinvollsten Weg suche.
Hoffe das man jetzt versteht was ich meine, bzw was ich vor habe
 

Yaslaw

n/a
Moderator
Wenn du die Titel auslesen willst, dann kommst du nicht an einem lesen der Daeti vorbei.
Wenn die Dateien reines HTML ohne PHP wären, dann kännterst du die Seite als XML parsen.
 

ikosaeder

Teekannen-Agnostiker
Warum definierst du nicht deine Überschriften dateiweit als PHP Variable und ersetzt sie im header und body gleichermaßen.
Das ist viel sinnvoller als die Seite zu erzeugen, zu parsen und dann zu modifizeiren.
 

basti1012

Erfahrenes Mitglied
Wenn du die Titel auslesen willst, dann kommst du nicht an einem lesen der Daeti vorbei.
Wenn die Dateien reines HTML ohne PHP wären, dann kännterst du die Seite als XML parsen.
Mit den xml parsen hatte ich auch gedacht , aber nachdem ich bei php.net geschaut habe viel das weg
Ich habe es jetzt mal mit loadHTMLfile versucht.
Das Ergebniss kommt mein Ziel schon mal nah.
Kann man es damit machen oder wäre file_get_contents oder curl besser ?

Warum definierst du nicht deine Überschriften dateiweit als PHP Variable und ersetzt sie im header und body gleichermaßen.
Das ist viel sinnvoller als die Seite zu erzeugen, zu parsen und dann zu modifizeiren.
Wie meinst du den das ?
Weil jede Seite hat anderen Inhalt und bräuchte einen eigenen title und vieleicht auch ne beschreibung in den <meta name="description">
Bei 100 Seiten oder so hätte ich das alles schon ausgefüllt , doch so wie es jetzt ist geht es einfach nicht. Wenn ich damit fertig bin gibt es schon html 6.


Vieleicht könnte man auch einmal sowas wie einen Bot bauen der alle Seiten einlesen tut ,das ändert und neu speichert.
Oder alles in einer Datenbank speichern das würde auch einiges erleichtern
 

ikosaeder

Teekannen-Agnostiker
Was ich meine ist, du hast eine Html seite in der soetwas steht wie title=<?php echo $title<php>
Dann hast du ein php script, das die HtmlSeite mit file_get_contents liest, alle h1-h6 findet und in $title speichert. Anschließend gibt php die Seite aus und dabei den titel schreibt.
 

Neue Beiträge