Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » [gelöst] Titel (Inhalt von HTML-Tag) herrausfinden Antworten
[gelöst] Titel (Inhalt von HTML-Tag) herrausfinden

Netbuster
Fachidiot


Beiträge: 128


Also im moment bin ich dabei eine Suchmaschine für meine Homepage zu machen, und ich will den Titel einer gefundenen Datei ausgeben, wie schaff ich das?
z.B.
<html>
<head>
<title>
Netkoma
</title>
</head>
<body>
...

wie kann ich den Text, der zwischen <title - </title> steht herrausfinden?


Diese Nachricht wurde geändert von: languitar
  Profil   Editieren   Zitieren

HoRnominatoR
Mausakrobat


Beiträge: 165


http://de2.php.net/strpos

einer der unteren kommentare.

---
get OPERA for free

  Profil   E-Mail   Website   Editieren   Zitieren

Netbuster
Fachidiot


Beiträge: 128


ich finde dort kein Beispiel!?
Ich hab zwar schon eins gefunden nur es klappt nicht:
the following 2 functions grab a piece of content from an external html and lists that in separate places -- i.e. the title for html documents, or a list of subtopics dynamically.. the first function grabs the first found and returns a string, the second recursively searches the rest of the document and returns an array..
I found this was very useful to display articles on my website that had various topics marked by a consistent <P class=subtopic>, and the end </ P> tags..

<?php
function stripfromtext($haystack, $bfstarttext, $endsection) {
$startpostext = $bfstarttext;
$startposlen = strlen($startpostext);
$startpos = strpos($haystack, $startpostext);
$endpostext = $endsection;
$endposlen = strlen($endpostext);
$endpos = strpos($haystack, $endpostext, $startpos);
return substr($haystack, $startpos + $startposlen, $endpos - ($startpos + $startposlen));
}

function &stripfromtextarray($haystack, $bfstarttext, $endsection, $myarray=array(), $offset=0) {
$startpostext = $bfstarttext;
$startposlen = strlen($startpostext);
$startpos = strpos($haystack, $startpostext, $offset);
$endpostext = $endsection;
$endposlen = strlen($endpostext);
$endpos = strpos($haystack, $endpostext, $startpos);
$myarray[] = substr($haystack, $startpos + $startposlen, $endpos - ($startpos + $startposlen));
$offset = $endpos;
if (is_numeric(strpos($haystack, $startpostext, $offset))) {
return stripfromtextarray($haystack,$startpostext, $endpostext, &$myarray, $offset);
}
else {
return $myarray;
}
}
?>

The following is an example of the use of these functions
<?php
$filetitle = stripfromtext ($content, "<P CLASS=title>", "</ P>");

// and
$rightmenuarray = stripfromtextarray($content, "<P CLASS=subtitle>", "</ P>");

foreach ($rightmenuarray as $rm) {$rightmenu.=$rm."<br>";}
?>

  Profil   Editieren   Zitieren

n0f3aR
Mausakrobat


Beiträge: 155


Überarbeitete Version:

1: 
2: 
3: 
4:
preg_match_all('#<title>(.+)</title>#', $html, $matches);
$title = ($matches[1][0]);


Du kannst alternativ aus dem Array $matches auch ALLE Titel auslesen, wenn es mehr als ein Treffer gibt ;)

---
Kostenlos Webspace bei funpic.de

Diese Nachricht wurde geändert von: n0f3aR
  Profil   E-Mail   Editieren   Zitieren

HoRnominatoR
Mausakrobat


Beiträge: 165


Netbuster schrieb am 10.09.2005 10:31
ich finde dort kein Beispiel!?


oh ja, t'schuldigung, falsche seite

http://de.php.net/preg_match

da in den unteren kommentaren, hier der auszug:

email at albert-martin dot com
23-Oct-2004 11:39
Here is a faster way of extracting a special phrase from a HTML page:

Instead of using preg_match, e.g. like this:
preg_match("/<title>(.*)<\/title>/i", $html_content, $match);

use the following:
<?php
function ExtractString($str, $start, $end) {
$str_low = strtolower($str);
if (strpos($str_low, $start) !== false && strpos($str_lower, $end) !== false) {
$pos1 = strpos($str_low, $start) + strlen($start);
$pos2 = strpos($str_low, $end) - $pos1;
return substr($str, $pos1, $pos2);
}
}
$match = ExtractString($html_content, "<title>", "</title>");
?>


---
get OPERA for free

  Profil   E-Mail   Website   Editieren   Zitieren

Netbuster
Fachidiot


Beiträge: 128


gut danke, nochmal

  Profil   Editieren   Zitieren
 

Antworten
Nach oben