v2.5.2
Giriş yap

Title Ve Snippet problemi PHP

erdal42
454 defa görüntülendi ve 1 kişi tarafından değerlendirildi
//Aramak istediğimiz değer
$searchParam = "Test";

$searchTitle = [
    "action" => "query",
    "list" => "search",
    "srsearch" => $searchParam,
    "format" => "json",
    /* Bu değerler kullanılarak sayfalama yapılabilir */
//    "srlimit" => 10,
//    "sroffset" => 9
];

/* verileri çekecek olan metodumuz */
function getData($params){
    $endPoint = "https://en.wikipedia.org/w/api.php";
    $url = $endPoint . "?" . http_build_query( $params );

    $ch = curl_init( $url );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    $output = curl_exec( $ch );
    curl_close( $ch );

    return json_decode( $output, true );
}

echo '<ul>';
$result = getData($searchTitle);

$query = $result['query'];
$total = $query['searchinfo']['totalhits'];
$datas = $query['search'];
/* Sonuç var mı kontrolü */
if ($total){
    foreach ($datas as $data){
        /* görselleri çekmek için belirteceğimiz parametreler */
        $imagesParam = [
            "action" => "query",
            "prop" => "images",
            "titles" => $data['title'],
            "format" => "json",
        ];

        echo '<li>';
        $images = getData($imagesParam);
        $firstPage = reset($images['query']['pages']);
        /* Konuya ait görsel değeri döndümü kontrolü yapılıyor */
        if ($firstPage && count($firstPage['images']) > 0){
            $imageUrlParams = [
                "action" => "query",
                "format" => "json",
                "prop" => "imageinfo",
                // İlk görseli alıyoruz
                "titles" => $firstPage['images'][0]['title'],
                'iiprop' => 'url'
            ];
            /* Görselin detayını çekerek url değerini bulmak için istek atıyoruz */
            $imageUrlResponse = getData($imageUrlParams);
            $imageUrlResponseFirstPage = reset($imageUrlResponse['query']['pages']);
            /* Dönen değer var mı kontrolü */
            if ($imageUrlResponseFirstPage && count($imageUrlResponseFirstPage['imageinfo']) > 0)
                echo '<img width="32" src="'. $imageUrlResponseFirstPage['imageinfo'][0]['url'] .'">';
        }

        echo $data['title'];
                echo $data['snippet'];
        echo '</li>';
    }
}else{
    echo $searchParam . ' hakkında hiç içerik bulunamadı';
}
echo '</ul>';

Bu wiki apisinde bulunan 'snippet' hakkında sorum var.
Snippet wiki'deki bulunan açıklama özetini çeker. Her şey güzel. Ancak arama yapıldığında mesela stadyum dediğinde başlıkta yok, ama snippet'de stadyum görünce onu çekip, sayfaya koyuyor.
Bunu engelleme şansımız var mı ?

Cevap yaz
Cevaplar (3)
erdal42
810 gün önce

@ozancrk yani hata veriyor derken, işlem görmüyor :(

erdal42
811 gün önce

@ozancrk Verdiğin kod maalesef hata veriyor :(

ozancrk
814 gün önce
if(!stristr($data['title'],$searchParam)){
         continue;
        }


echo '<li>'; 'dan önce şu kodu koyarsan gelen datada yer alan titleda kelimeni arar.
Title içinde o kelime yoksa ekrana bişey basmadan bir sonraki indexe geçer.


// Büyük küçük harfe duyarlı
if(!strstr($data['title'],$searchParam)){
         continue;
        }