v2.5.2
Giriş yap

TDK sözlük veri php ile çekme

erdal42
458 defa görüntülendi ve 1 kişi tarafından değerlendirildi
<?php
function TDKSozluk($kelime){
	$ch = curl_init("https://sozluk.gov.tr/gts?ara=elma");
	curl_setopt_array($ch, [
		CURLOPT_RETURNTRANSFER => True,
		CURLOPT_SSL_VERIFYPEER => False
	]);
	$sonuc = curl_exec($ch);
	curl_close($ch);
	$sonuc = json_decode($sonuc,True);
	return [
		"madde" => $sonuc[0]["madde"],
		"tip" => $sonuc[0]["anlamlarListe"][0]["ozelliklerListe"][0]["tam_adi"],
		"anlam" => $sonuc[0]["anlamlarListe"][0]["anlam"],
		"benzer" => $sonuc[0]["birlesikler"]
	];
}
?>

Merhabalar,
TDK'dan sözlük verisi çekmeye çalışıyordum. Ancak hata var. Nerde hata yapmış olabilirim ?

https://sozluk.gov.tr/gts?ara=elma burda tdk çalışıyor.

abdullahx
586 gün önce

Ben yine de opsiyonlu bir şeyler hazırladım :) Gelen kelimeye, anlama ve benzer kelimelere istediğiniz gibi limit koyabilirsiniz

<?php

/**
 * @param $kelime
 * @return string
 * - PHP de sadece baş harfini büyük yapan Türkçe uyumlu fonksiyon olmadığı için kendimiz yazdık
 */
function mb_ucfirst($kelime): string
{
    return mb_strtoupper(mb_substr($kelime,0, 1)) . mb_substr($kelime, 1);
}

/**
 * @param string $kelime - Aranacak olan kelime
 * @param string|false $kelimeLimit - Aranacak kelimenin kaç tane eş sesli anlamının döneceğini belirten parametre. false verilirse limit olmaz
 * @param int $anlamLimit - Kelimenin en fazla kaç anlamı geri dönsün
 * @param int $benzerLimit - Benzer kelimelerden en fazla kaç tane dönsün
 * @return array
 */
function TDKSozluk(string $kelime, $kelimeLimit = false, int $anlamLimit = 2, int $benzerLimit = 10): array
{
    $ch = curl_init("https://sozluk.gov.tr/gts?ara=$kelime");
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_SSL_VERIFYPEER => false
    ]);
    $sonuc = curl_exec($ch);
    curl_close($ch);
    $sonuc = json_decode($sonuc,true);

    $return = [];
    for ($i = 0; $i <= count($sonuc); $i++) { // En fazla kaç tane kelime anlamı dönsün limiti. Yani eş anlamlı kaç kelime görünsün. Verdiğim hak örneği, hâk ve ikinci sırada bulunan hak kelimesini döndürür varsayılan 2 ile
        if ($kelimeLimit !== false) {if ($i == $kelimeLimit) break; }
        if (isset($sonuc[$i])) {
            $madde = mb_ucfirst($sonuc[$i]['madde']);
            $return[$sonuc[$i]['kac']]['kelime'] = $madde;
            for ($j = 0; $j < count($sonuc[$i]['anlamlarListe']); $j++) {
                if ($j == $anlamLimit) break;
                if (isset($sonuc[$i]['anlamlarListe'][$j])) {
                    $return[$sonuc[$i]['kac']]['anlamlar'][$j] = [
                        'anlam' => $sonuc[$i]['anlamlarListe'][$j]['anlam'],
                        'ozellik' => $sonuc[$i]['anlamlarListe'][$j]['ozelliklerListe'][0]['tam_adi'] ?? null // Sadece ilk sıradaki özelliğin değeri
                    ];
                }
            }
            $birlesikler = $sonuc[$i]['birlesikler'];
            if (strlen($birlesikler)) {
                $explode = explode(', ', $birlesikler);
                $return[$sonuc[$i]['kac']]['birlesikler'] = array_slice($explode, 0, $benzerLimit); // Birleşik kelimelerden en fazla kaç tane geri dönsün
            }
        }
    }
    return $return;
}

$h = TDKSozluk('hak', 2, 1, 5);
print_r($h);