TDK sözlük veri php ile çekme
<?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.
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);