PHP Advance - kỹ thuật lấy dữ liệu từ website khác

Thảo luận trong 'PHP & MySQL' bắt đầu bởi Lê Xuân Thành, 20/12/11.

  1. Lê Xuân Thành

    Lê Xuân Thành Staff Member

    Hôm rồi mới học cái này, giờ ôn lại chút:

    Đầu tiên để hiểu được thế nào là lấy dữ liệu từ site khác ta sẽ làm 1 ví dụ nhỏ sau:

    Tạo 1 file noidung.php như sau:
    HTML:
    <html>
    <head>
    <title>PHP advance</title>
    </head>
    <body>
    <p div id="noidung">Cong dong joomla Viet Nam</p>
    <p>Hom nay la thu 3</p>
    <p>Ngay mai la thu 4</p>
    </body>
    </html>
    
    Tao file thứ 2 với tên advance.php:
    HTML:
    <?php
    $file=file_get_contents("noidung.php");
    echo $file;
    ?>
    
    Chạy file advance.php ta sẽ đc kết quả là
    Cong dong joomla Viet Nam
    Hom nay la thu 3
    Ngay mai la thu 4

    Như vậy ta đã lấy được nội dung file noidung.php show ra ngoài mà trên url vẫn là file advance.php

    Tiếp tục:
    Sửa file advance.php lại như sau:
    HTML:
    <?php
    $file=file_get_contents("noidung.php");
    $begin="<p div id=\"noidung\">";
    $end="</\p>";
    preg_match("/$begin.*$end/",$file,$kq);
    echo "<pre>";
    print_r($kq);
    echo "<pre>";
    ?>
    
    Chạy file advance.php ta sẽ đc kết quả là:
    Array
    {
    [0]=>
    Cong dong joomla Viet Nam
    }

    Như vậy ta đã lọc được vị trí muốn lấy dữ liệu bằng cách sử dụng cặp biến $begin, $end

    Tuy nhiên đoạn code trên còn sơ sài và chưa tối ưu, cụ thể bạn chạy file advace.php rồi viewcode sẽ thấy, nó sẽ quét từ đầu thẻ p đến hết thẻ p, quét luôn cả div id="noidung"
    như vậy ta cần sửa lại luật như sau
    preg_match("/(?<=$begin).*(?=$end)/",$file,$kq);

    Phần tiếp theo mình sẽ áp dụng cái này vào việc lấy tin tức từ site dantri.vn
    ConanTV, Yachi_Emiko, 4integrity2 others thích bài này.
  2. Yachi_Emiko

    Yachi_Emiko Active Member

    cái " (?<= " là sao nhỉ ?:confused:
  3. nhoccon

    nhoccon Thành viên mới

    Thắc mắc chuẩn. Không hiểu dấu "<" sao đặt ở đấy.
  4. Yachi_Emiko

    Yachi_Emiko Active Member

    [​IMG] Chuẩn, nhoccon đồng cảnh ngộ ?

Chia sẻ trang này