[php] Verkrijg title en meta tags

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 15-09 13:20
Op mijn website kunnen bezoekers hun link plaatsen. Nu moeten ze de titel, url en beschrijving invullen. Ik wil graag dat dit automatisch wordt gedaan. Hij moet dan de titel en beschrijving van de opgeven url halen. Tevens de keywords zodat er makkelijk gezocht kan worden. Met de function get_meta_tags() krijg ik de juiste waarden terug. Maar de title krijg ik niet. Weet iemand hoe ik die kan verkrijgen?

PHP:
1
2
3
4
5
$metatags  = get_meta_tags($address);
$description = $metatags['description'];
$keywords = $metatags['keywords'];

echo $description . "<br>". $keywords;

Acties:
  • 0 Henk 'm!

  • PrinsEdje80
  • Registratie: Oktober 2001
  • Laatst online: 15-07 09:34

PrinsEdje80

Holographic, not grated...

Door middel van een ereg of preg... Haal het stukje uit de pagina mbv alles wat tussen <title>....</title> staat...
Eitje toch :?

Used to be Down Under... Foto gallery


Acties:
  • 0 Henk 'm!

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

De HTML inlezen en met een regex de tekst tussen de <title> tags ophalen

Acties:
  • 0 Henk 'm!

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 15-09 13:20
wasigh schreef op 11 november 2002 @ 10:21:
De HTML inlezen en met een regex de tekst tussen de <title> tags ophalen
Gaat dat net zo snel? Is het met de function get_meta_tags niet sneller?

Als ik dat doe dan wil ik ook de meta tags direct meenemen

Acties:
  • 0 Henk 'm!

Verwijderd

frankschers schreef op 11 November 2002 @ 10:24:
[...]


Gaat dat net zo snel? Is het met de function get_meta_tags niet sneller?
dat kun je blijven proberen maar om de title te krijgen zal dat zeker niet sneller zijn, want die hoort daar niet bij..
Als ik dat doe dan wil ik ook de meta tags direct meenemen
dan moet je ff een toffe functie schrijven die de htmlpagina inleest en de title en de metatags in een array stopt.. beetje zonde inderdaad om eerst zelf de pagina in te lezen voor de title en dan even later get_meta_tags() dat ook nog een keer te laten doen..

Acties:
  • 0 Henk 'm!

Verwijderd

intern zal ook die get meta tags functie gewoon een str_replace doen of een andere functie aanroepen en char voor char alles nalopen. als je dus gewoon een str_replace doet en dan eventueel als replace argument een functie aanroept die de title opvangt en opslaat in een global var dan ben je klaar. voor de str_replace mag je zelf zoeken, neem aan dat dat wel moet lukken.

Acties:
  • 0 Henk 'm!

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 15-09 13:20
Ik heb het volgende gemaakt. Dit werkt! Heeft iemand nog opmerkingen wat verbeterd kan worden?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function PHParseUrl($url)
{

    if(!eregi("^http://", $url))
        $url = "http://".$url;
    if($fp = fopen($url, "r"))
    {
        $fr = fread($fp, "3000");
        preg_match("|<title[^>]*>(.*)</title>|siU", $fr, $title);
        preg_match("|<meta name=\"description\" content=\"(.*)\">|siU",$fr,$description);
        preg_match("|<meta name=\"keywords\" content=\"(.*)\">|siU",$fr,$keywords);
        $title = $title[1];
        $description = $description[1];
        $keywords = $keywords[1];

        fclose($fp);
    }
    (isset($url))? $url=$url : $url = "Geen geldige url opgeven";
    (isset($title))? $title=$title : $title = "Pagina bevat geen titel";
    (isset($description))? $description=$description : $description = "Geen beschrijving beschikbaar";
    (isset($keywords))? $keywords=$keywords : $keywords = "";
    
    $output = array(
                "url" => $url,
                "title" => $title,
                "keywords" => $keywords,
                "description" => $description
                );
                
    return $output;
}
$url = "http://www.test.nl";

$meta = PHParseUrl($url);

echo "<p>".$meta['url']."</p><p>".$meta['title']."</p><p>".$meta['keywords']."</p><p>".$meta['description']."</p>";

Acties:
  • 0 Henk 'm!

  • PrinsEdje80
  • Registratie: Oktober 2001
  • Laatst online: 15-07 09:34

PrinsEdje80

Holographic, not grated...

Nee, netjes....
PHP:
1
2
3
        $title = $title[1]; 
        $description = $description[1]; 
        $keywords = $keywords[1];

Ik denk dat hier de echte die-hard coders over vallen, maar ik niet hoor ;)

Used to be Down Under... Foto gallery


Acties:
  • 0 Henk 'm!

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 15-09 13:20
PrinsEdje80 schreef op 12 November 2002 @ 00:31:
Nee, netjes....
PHP:
1
2
3
        $title = $title[1]; 
        $description = $description[1]; 
        $keywords = $keywords[1];

Ik denk dat hier de echte die-hard coders over vallen, maar ik niet hoor ;)
En hoe zou het wel moeten dan?

Acties:
  • 0 Henk 'm!

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 15-09 13:20
Klopt ik heb het iets aangepast. Ik hoop dat dit wel beter is.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function PHParseUrl($url)
{

    if(!eregi("^http://", $url))
        $url = "http://".$url;
    if($fp = fopen($url, "r"))
    {
        $fr = fread($fp, "3000");
        preg_match("|<title[^>]*>(.*)</title>|siU", $fr, $title);
        preg_match("|<meta name=\"description\" content=\"(.*)\">|siU",$fr,$description);
        preg_match("|<meta name=\"keywords\" content=\"(.*)\">|siU",$fr,$keywords);

        fclose($fp);
    }
    (isset($url))? $url=$url : $url = "Geen geldige url opgeven";
    (isset($title[1]))? $title=$title[1] : $title = "Pagina bevat geen titel";
    (isset($description[1]))? $description=$description[1] : $description = "Geen beschrijving beschikbaar";
    (isset($keywords[1]))? $keywords=$keywords[1] : $keywords = "";
    
    $output = array(
                "url" => $url,
                "title" => $title,
                "keywords" => $keywords,
                "description" => $description
                );
                
    return $output;
}

Acties:
  • 0 Henk 'm!

  • PrinsEdje80
  • Registratie: Oktober 2001
  • Laatst online: 15-07 09:34

PrinsEdje80

Holographic, not grated...

frankschers schreef op 12 november 2002 @ 09:58:
[...]


En hoe zou het wel moeten dan?
Dat weet ik niet O-), maar wel dat het (lijkt me, maar weet echt niet zeker) niet netjes is om een element van een array toe te kennen aan een variabele met dezelfde naam, dus daarmee de array te overschrijven... Vandaar... Maar als ik fout zit hoor ik het graag.

[edit]
Wat je gedaan hebt is idd netjes!! _/-\o_

Used to be Down Under... Foto gallery

Pagina: 1