Arrayları echo dönüştürme
function mb_ucfirst($kelime): string
{
return mb_strtoupper(mb_substr($kelime,0, 1)) . mb_substr($kelime, 1);
}
function TDKSozluk(string $kelime, $kelimeLimit = true, 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 !== true) {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(htmlspecialchars($_GET['q']), 2, 1, 5);
print_r($h);
if (count($h)) {
}
else {
}
Merhabalar, Abdullah hocam sayesinde kodum hazır. TDK'dan veri çekiyoruz. Bunu nasıl if ile echo yani, düzenleyip veriyi işleyebiliriz ?
/**
* @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(htmlspecialchars($_GET['q'] ?? 'hissikablelvuku'), 2, 1, 5);
if (count($h)) {
function div($content) { return "<div>$content</div>"; }
function section($content) { return "<section>$content</section>"; }
function strong($content) { return "<strong>$content</strong>"; }
function span($content) { return "<span>$content</span>"; }
function i($content) { return "<i>$content</i>"; }
function ul($content) { return "<ul>$content</ul>"; }
function li($content) { return "<li>$content</li>"; }
$kelimeler = "";
$anlamlar = "";
$birlesikler = "";
echo "<div class='kelimeler'>";
foreach($h as $item) {
echo "<div class='kelimeKapsayici'>";
$kelime = $item["kelime"];
echo " <div class='kelime'>";
echo " <div>Kelime:</div>";
echo " <div>$kelime</div>";
echo " </div>";
echo " <div class='anlamlar'>";
echo " <div>Anlamlar</div>";
foreach($item["anlamlar"] as $anlam) {
$anlamStr = $anlam["anlam"];
$ozellik = $anlam["ozellik"];
echo "<div class='anlam'>";
echo " <div>";
echo " <div>Özellik:</div>";
echo " <div>$ozellik</div>";
echo " </div>";
echo " <div>";
echo " <div>Anlam:</div>";
echo " <div>$anlamStr</div>";
echo " </div>";
echo "</div>";
};
echo "</div>";
echo "<div class='birlesikler'>";
foreach($item["birlesikler"] as $birlesik) {
echo "<div>$birlesik</div>";
};
echo "</div>";
echo "</div>";
};
echo "</div>";
}
else {
// Demek ki bir sonuç dönmemiş. Zaten get yöntemi ile sonuçları aldığına göre sayfanı bu şekilde oluşturabilirsin. Asıl güzel olanı aramayı ajax ile yapıp öyle sonuçları göstermen olur
}
Çalıştı hocam. Ancak anlam vs bir kısım çalışmadı gibi.
link : https://prnt.sc/4QSeJAXxj-AR
Bir yerde hata yapmışmıyız hocam ?