kostenloser Webspace werbefrei: lima-city


Mit PHP den Inhalt aus dem <title>-Tag entnehmen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    t****o

    Hallo!
    Ich suche nach einer Möglichkeit, mit PHP aus einer HTML-Datei den Inhalt des <title>-Tags zu entnehmen, um ihn dann in eine Variable zu schreiben. Kann mir da einer ein Beispiel geben, wie das geht?

    MfG
    telelo
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. strings? Äh naja klar die Speicherart ist string! Genau genommen ist regEx das, was du suchst:

    echo preg_replace('#.*<title>([^<]*)</title>.*#si', '\\1', "ICH BIN DER QUELLTEXT");
  4. thomasba

    Co-Admin Kostenloser Webspace von thomasba

    thomasba hat kostenlosen Webspace.

    zenks schrieb: strings? Äh naja klar die Speicherart ist string! Genau genommen ist regEx das, was du suchst:

    echo preg_replace('#.*&lt;title&gt;([^&lt;]*)&lt;/title&gt;.*#si', '\\1', "ICH BIN DER QUELLTEXT");


    Geht auch mit preg_match:
    <?php
    // $qt enthält den Quelltext als String
    preg_match("#<title>(.+?)</title>#is",$qt,$match);
    $title = $match[1];
    ?>


    Beitrag zuletzt geändert: 31.5.2009 22:49:36 von thomasba
  5. thomasba schrieb:
    zenks schrieb: strings? Äh naja klar die Speicherart ist string! Genau genommen ist regEx das, was du suchst:

    echo preg_replace('#.*&lt;title&gt;([^&lt;]*)&lt;/title&gt;.*#si', '\\1', "ICH BIN DER QUELLTEXT");


    Geht auch mit preg_match:
    <?php
    // $qt enthält den Quelltext als String
    preg_match("#<title>(.+?)</title>#is",$qt,$match);
    $title = $match[1];
    ?>


    Beides geht. Die replace-Variante ersetzt den gesammten Quelltext, sodass am Ende im Quelltext nurnoch der Title steht. Das kann abschön sein, wenn man den Quelltext weiterverwenden will, daher ist deine Variante besser...

    PS: .* am Anfang und Ende ist unnötig. Das hätte nur Sinn wenn man ^.* und .+$ schreibt. So wird aber an beliebiger Position gesucht, also ist es offensichtlich, dass davor kommen kann was will...

    Und noch ne Frage: Was macht .+? ? Bedeutet das, dass Man entweder mindestens ein beliebiges Zeichen haben kann, oder garkeis (was das selbe wäre wie .*) oder, dass man entweder mindestens ein beliebiges Zeichen hat oder nur eins (was das selbe wäre wie .+)?

    Beitrag zuletzt geändert: 31.5.2009 22:54:45 von nikic
  6. thomasba

    Co-Admin Kostenloser Webspace von thomasba

    thomasba hat kostenlosen Webspace.

    nikic schrieb:
    [..]
    Und noch ne Frage: Was macht .+? ? Bedeutet das, dass Man entweder mindestens ein beliebiges Zeichen haben kann, oder garkeis (was das selbe wäre wie .*) oder, dass man entweder mindestens ein beliebiges Zeichen hat oder nur eins (was das selbe wäre wie .+)?


    Es muss mindestens ein Zeichen Vorkommen,
    . bedeutet beliebiges Zeichen
    + bedeutet eins davon oder mehr
    das ? am Ende bedeutet Ungreedy, d.h. es wir nicht der längstmögliche String ausgesucht.

    Eine gute Einführung, wo das alles auch drin steht:
    http://tut.php-quake.net/de/regex.html#s9

    Beitrag zuletzt geändert: 31.5.2009 23:18:33 von thomasba
  7. thomasba schrieb:
    Es muss mindestens ein Zeichen Vorkommen,
    . bedeutet beliebiges Zeichen
    + bedeutet eins davon oder mehr
    das ? am Ende bedeutet Ungreedy, d.h. es wir nicht der längstmögliche String ausgesucht.

    Eine gute Einführung, wo das alles auch drin steht:
    http://tut.php-quake.net/de/regex.html#s9

    Cool, lernt man auch mal was neues... Ich hab ? bis jetzt immer nur als eine Abkürzung für {0,1} gekannt. Das Ungreedy kannt ich nur als U-Modifier...
    Also ist eigentlich .*? das selbe (in diesem Fall) wie [^<]+...
    Aber iegentlich müsste letztere Variante schneller gematcht werden. So muss er mehr Durchläufe machen, bis er den "kleinsten" String gefunden hat...

    Beitrag zuletzt geändert: 1.6.2009 9:33:42 von nikic
  8. Autor dieses Themas

    t****o

    Danke an alle, besonders an thomasba! Es funktioniert super!!

    telelo
  9. h*****b

    Eine weitere einfache Lösung wäre, nachdem der Quelltext mal angenommen in der Variable $source gespeichert wurde (gehen wir mal von fopen() und fread() aus):

    <?php
    //Hier wird $result mit dem Quelltext belegt
    //..
    
    //Auf $source umschreiben (oder man kanns auch lassen)
    $source = $result;
    
    //Nun die erste Position des Titels rausfiltern
    $firstpos = strpos($source, '<title>') +7;
    
    //Nun die letzte Position rausfiltern
    $lastpos = strpos($source, '</title>') -1;
    
    //Nun den Substring nehmen
    $title = substr($source, $firstpos, $lastpos);
    
    //Titel ausgeben
    echo $title;
    ?>


    mfg
    htnipdb
  10. n******a

    Hi,

    Ich hatte letztens ein ähnliches Problem wollte aber keine keine Regex nutzen. Mir fiel dann wieder der Tipp eines Arbeitskollegen ein,
    welcher phpquery war eine Lib die im Prinzip wie Jquery ist nur halt für php. Find ich persönlich sehr nützlich ;-)

    Link : http://code.google.com/p/phpquery/

    greets
  11. 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!