• 04-06-2017, 23:49:03
    #1
    Üyeliği durduruldu
    Bir projemiz için linkteki meta tagları türkçe karakter problemsiz almamız gerekiyor.

    Örneğin:

    http://www.nedir.com/kalın-bağırsak

    Bu linkteki meta tagları alırken bir sorunumuz var.

    Charset etiketi title ve description dan önce oldugu için sanırım türkçe karakterler bozuk olarak geliyor. ( Bizim yapımız utf-8 )


    Ayrıca Loadhtml fonksiyonuyla alıyoruz etiketleri fakat;

    Buradaki description tagını nedense boş getiriyor.

    Bu 2 sorunumuzu çözecek arkadaşa 30 TL hediye edeceğim.

    $doc = new DOMDocument();
    $doc->loadHTML(mb_convert_encoding($site, 'HTML-ENTITIES', 'UTF-8'));
    $tr = false;
    
    
    $nodes = $doc->getElementsByTagName('title');
    
    //get and display what you need:
    $title = $nodes->item(0)->nodeValue;
    $metas = $doc->getElementsByTagName('meta');
    
    for ($i = 0; $i < $metas->length; $i++)
    {
    
        $meta = $metas->item($i);
        if($meta->getAttribute('name') == 'description')
            $description = $meta->getAttribute('content');
        if($meta->getAttribute('name') == 'keywords')
            $keywords = $meta->getAttribute('content');
    	
    }
  • 05-06-2017, 00:31:38
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    <?php
    $site = trim("http://www.nedir.com/kal%C4%B1n-ba%C4%9F%C4%B1rsak");
    $doc = new DOMDocument();
    $doc->loadHTML(file_get_contents($site));
    $metas = $doc->getElementsByTagName('meta');
    
    for ($i = 0; $i < $metas->length; $i++) {
        
        $meta = $metas->item($i);
        if ($meta->getAttribute('name') == 'description')
            $description = $meta->getAttribute('content');
        if ($meta->getAttribute('name') == 'keywords')
            $keywords = $meta->getAttribute('content');
        
    }
    print_r($keywords);
    
    
    ### in curl ###
    
    // $curl = curl_init();
    // curl_setopt($curl,CURLOPT_URL, $site);
    // curl_setopt($curl,@CURLOPT_RETURNTRANSFER, true);
    // curl_setopt($curl,@CURLOPT_FOLLOWLOCATION, true);
    
    // $exec = curl_exec($curl);
    
    
    // preg_match('@<meta.*?name="keywords".*?content="(.*?)" />@si',$exec,$keywords);
    // preg_match('@<meta.*?name="description".*?content="(.*?)".*?/>@si',$exec,$description);
    
    
    
    // $keywords = $keywords[1];
    // $description = $description[1];
    // print_r($keywords);




    koda bir sorun yok dosya ayarlarını böyle yaparsanız uygun olur.
  • 05-06-2017, 16:12:16
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Kodunuzun çalışmama nedeni galiba url içerisinde geçen Türkçe karakterler. Aşağıdaki fonksiyonu kullanarak sorunu halledebilirsiniz.

    <?php
    
    function bilgileri_cek($url)
    {
    	$meta_tags = [];
    	// url sorunu düzeltme
    	$url  = rawurlencode($url);
    	$url = str_replace("%3A", ":", $url);
    	$url = str_replace("%2F", "/", $url);
    
    	$baglan = file_get_contents($url);
    	preg_match('/<title>(.*?)<\/title>/', $baglan,$sonuclar) ? $meta_tags["title"] = $sonuclar[1] : null;
    	preg_match('/<meta name="description" content="(.*?)"\/>/', $baglan,$sonuclar) ? $meta_tags["description"] = $sonuclar[1] : null;
    	preg_match('/<meta name="keywords" content="(.*?)" \/>/', $baglan,$sonuclar) ? $meta_tags["keywords"] = $sonuclar[1] : null;
    	return $meta_tags;
    }
    
    $veriler = bilgileri_cek("http://www.nedir.com/kalın-bağırsak");
    
    
    echo "<pre>";
    print_r ($veriler);
    echo "</pre>";
    
    ?>
    Kolay gelsin