v2.5.2
Giriş yap

Arrayları echo dönüştürme

erdal42
401 defa görüntülendi ve 1 kişi tarafından değerlendirildi
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 ?

erdal42
773 gün önce

/**
 * @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 ?