• 22-06-2021, 20:34:15
    #1
    Merhaba arkadaşlar curl ya da file_get_contents ile html etiketleri nasıl json formatına dönüştürebilirim. Mesela google.com.tr adresinin <title>Başlık</title> json olarak çıktı alacak.
  • 22-06-2021, 20:47:45
    #2
    aşağıdaki kod {"tag":"html","children":[{"tag":"head","children":[{"tag":"title","html":"Test"}]},{"tag":"body","html":"deneme"}]} şeklinde çıktı verir. belki düzenleyip kullanabilirsin.

    <?php
    
    function html_to_obj($html) {
        $dom = new DOMDocument();
        $dom->loadHTML($html);
        return element_to_obj($dom->documentElement);
    }
    function element_to_obj($element) {
        $obj = array( "tag" => $element->tagName );
        foreach ($element->attributes as $attribute) {
            $obj[$attribute->name] = $attribute->value;
        }
        foreach ($element->childNodes as $subElement) {
            if ($subElement->nodeType == XML_TEXT_NODE) {
                $obj["html"] = $subElement->wholeText;
            }
            else {
                $obj["children"][] = element_to_obj($subElement);
            }
        }
        return $obj;
    }
    
    echo json_encode ( html_to_obj('<html><head><title>Test</title></head><body>deneme</body></html>'));
    
    
    ?>
  • 22-06-2021, 23:04:32
    #3
    Bu şekilde çözdüm

    header('Content-Type: application/json');
    
    $xml = file_get_contents("https://www.youtube.com/feeds/videos.xml?playlist_id=UUR5wZcXtOUka8jTA57flzMg");
    $basliklar = "#<media:title>(.*)</media:title>#i";
    $linkler = "#<yt:videoId>(.*)</yt:videoId>#i";
    
    preg_match_all($basliklar, $xml, $baslik);
    preg_match_all($linkler, $xml, $link);
    echo '[';
    for ($i=1;$i<=14;$i++)
    {
    
    echo '{
    "Başlık": '.json_encode( $baslik[1][$i], JSON_UNESCAPED_UNICODE ).'
    },';
    echo '{
    "VideoId": '.json_encode( $link[1][$i], JSON_UNESCAPED_UNICODE ).'
    },';
    
    }
    echo '{}]';