0

xpath を使用して Web サイトからデータを取得し、それを JSON 配列に変換しようとしました。

これは私が得た結果です

{"mobiles":[{"model":3,"price":"Samsung Galaxy S4 I9500"},{"model":5,"price":"Rs. 109,900"},{"model":10, "price":"Samsung Galaxy Note N7000"},{"model":12,"price":"Rs. 63,000"},{"model":17,"price":"Dialog i43"},{"model ":19,"price":"Rs. 16,490"},{"model":24,"price":"Micromax X1i XTRA"},{"model":26,"price":"Rs. 3,290"} ,{"model":31,"price":"Micromax X103"},{"model":33,"price":"Rs. 2,390"},{"model":38,"price":"Micromax A110キャンバス 2"},{"モデル":40,"価格":"Rs. 25,990"}]}

この配列を次のように印刷したい

{"モバイル":[{"モデル":Samsung Galaxy S4 I9500,"価格":"109,900"},etc...

これは私が使用したコードです

    @$doc = new DOMDocument();
@$doc->loadHTMLFile($file);
$xpath = new DOMXpath($doc);
$elements = $xpath->query("//*[@class='span2 product_box']");

$models = array();
$models1 = array();

if (!is_null($elements)) {
    foreach ($elements as $element) {
        $nodes = $element->childNodes;
        foreach ($nodes as $node) {

            $modle = trim($node->nodeValue,"\t,\n,\r");
            $models[] = $modle;

        }
    }
}

$models1 = array_filter(array_map('trim', $models));

foreach($models1 as $key => $val)
{
    $result[] = array('model'=> $key, 'price'=> $val);  
}

$finalResultArray = array(
        'mobiles' => $result
);

echo json_encode($finalResultArray);

誰でも私を助けることができますか?

4

1 に答える 1

0
$var = '{"mobiles":[{"model":3,"price":"Samsung Galaxy S4 I9500"},{"model":5,"price":"Rs. 109,900"},{"model":10,"price":"Samsung Galaxy Note N7000"},{"model":12,"price":"Rs. 63,000"},{"model":17,"price":"Dialog i43"},{"model":19,"price":"Rs. 16,490"},{"model":24,"price":"Micromax X1i XTRA"},{"model":26,"price":"Rs. 3,290"},{"model":31,"price":"Micromax X103"},{"model":33,"price":"Rs. 2,390"},{"model":38,"price":"Micromax A110 Canvas 2"},{"model":40,"price":"Rs. 25,990"}]}';

次でテストします。

echo "<pre>";
print_r(json_decode($var,true));
echo "</pre>";

結果:

Array
(
    [mobiles] => Array
        (
            [0] => Array
                (
                    [model] => 3
                    [price] => Samsung Galaxy S4 I9500
                )

            [1] => Array
                (
                    [model] => 5
                    [price] => Rs. 109,900
                )

            [2] => Array
                (
                    [model] => 10
                    [price] => Samsung Galaxy Note N7000
                )
)
于 2013-10-01T09:19:34.563 に答える