post image

Căn Bản PHP – Bài 11 – Phần 2

Có rất nhiều thủ thuật sử dụng đến Regular Expression hay gọi chính xác theo tiếng việt là Biểu Thức Chính Quy. Đôi lúc, bạn cũng thấy được rằng, người ta lọc các địa chỉ email của chúng ta và bắt nhập chính xác định dạng của email.

Như vậy, làm sao để bạn có thể sử dụng Regular Expression cho các ứng dụng của mình, lọc, kiểm tra, lấy dữ liệu. Bài học hôm nay chúng ta sẽ đi qua các khái niệm cơ bản của Expression.

Phần 2 này chú trọng vào các khái niệm và cách so sánh giống nhau của các dấu của Regular Expression. Bài tập của phần này, bạn chỉ cần tìm hiểu các dòng của Option để biết các ký hiệu của nó trong PHP được ký hiệu như thế nào.

1. Bài tập thực hành.

Hãy xem thông tin link sau đây. Và thực hiện bài tập như những gì bạn nhìn thấy
Bấm để xem ví dụ

2. Hướng dẫn

- Để hoàn thành tốt bài tập phần này, không ít bạn có thể sẽ bỡ ngỡ với Regular Expression và các hàm của PHP. Sau đây là một số hướng dẫn để có thể hoàn thành tốt bài tập :

file_get_contents() // Một trong những hàm có thể dùng để lấy nội dung

// Hãy thực hiện dữ liệu thông qua 1 Class và nhiều Function. Luôn viết function để thực hiện thao tác, tránh làm bằng tay quá nhiều.

//Hàm lọc chuẩn của một kiểu lọc dùng để tham khảo cách viết.

//get_page

class get_news {
    function get_page(){
        global $match;
	$start = '<div class=\"folder-news\">';
	$end = '<\/div>';
        preg_match_all('/(?<='.$start.').*(?='.$end.')/msU',$this -> page_source,$match);
    }

    //Tiếp tục phát triển các hàm tiếp theo để lấy nội dung, tiêu đề, và các link trong bài viết của VN Express.
}

- Vui lòng gửi file của bạn về email : clackken.smith@gmail.com, tôi sẽ xem và chấm thử cho các bạn.

Cũng như với mọi tiêu chí tôi sẵn sàng nhận những ý kiến đóng góp về ý kiến cho Video để ngày càng hoàn thiện hơn.

Download: Mediafire

Thời lượng: 41:45

«

»

32 Comments

( Comment bài này )
  1. harrycuong says:

    mọi ng cho hỏi mình muốn viết code này thì dùng phần mềm gì là tốt nhất nhỉ.:)

  2. nightbaron says:

    cái link ví dụ chết rồi anh ơi

  3. King says:

    Chào anh. Em có thắc mắc chút ở chỗ string pattern: ‘/(?<='.$start.').*(?='.$end.')/msU'. Biểu thức regular expression thì em hiểu, nhưng em không hiểu phần /msU này để làm gì? Em xem lại các biểu thức trong video session 11_2 thì không thấy anh giới thiệu gì về /msU này. Mong a giải thích giúp em với. Cảm ơn 2 anh!

    • King says:

      Em hỏi thêm chút nữa là trong cái biểu thức chính quy để lọc nội dung, lúc lọc thẻ thì em viết (?<=<a).*(?=).
      Còn bài của bạn llov3monk3y thì viết (?<=<a).*(?=) nhưng vẫn cho kết quả đúng?
      Anh giải thích giúp với.

  4. TzonGreen says:

    E mới học đến bài 8 thui hihi^^ học cùng izwebz thì đúng là gần như ko cần tài liệu để học, e còn có thể làm quen vs joomla nhờ izwebz, bạn e bảo nên biết về joomla, e rất bỡ ngỡ với cái này. Có người hướng dẫn quả thực học hiệu quả hơn ^^ Cảm ơn anh Clackken.Smith

  5. 1. Bài tập thực hành. <<< bài ví dụ die rồi a ơi

    • ThanhLoi says:

      Mình là Lợi,mình may mắn vì khi mới bắt đầu học thiết kế web gặp đươc izwebz.com,nó thật sự giúp mình cho việc học tập cho những chưa biết nhiều về lâp trình nói chung va PHP nói riêng.
      Cảm ơn DW va CS rất nhiều!

      • Hoang Loi says:

        bạn này cũng là Lợi à.
        công nhận bộ tut này của ông C.Smith quá đỉnh. bạn cứ theo dõi và học tập thì chắc chắn bạn sẽ hoàn thiện PHP lang của mình. :D chúc bạn cùng tên học tốt nhé

        • Thanh Loi says:

          Bạn Hoàng Lợi ji đó ơi!
          Mình mới bắt đầu học thiết kế web thui,bạn biết o sg có chỗ nào học lập trình PHP ok k?mình thì chưa biết ty nào về lập trình hết vì mình là tay ngang thui chứ k phải là dân cntt,nếu là học từ đầu thì minh phải như thế nào,mình có đọc bài này của anh DW rùi nhưng vẫn chưa rỏ lắm,bạn chỉ mình nha.thanks!

          • Mrsku says:

            Ở sài gòn bạn đến trung tâm tin học của đại học khoa học tự nhiên đó, học chắc chắn dạy lý thuyết trên máy nên dễ học lắm bạn à, nếu bạn là sinh viên thì đc giảm học phí 20% đó. Cở khoảng 1tr300, mình cũng đang học ở đó nè

  6. mabu says:

    anh clacken.smith có thể làm video về các php frame work được ko anh?cám ơn izwebz

  7. longlh says:

    thx C.smith! wait for your next session.

  8. Đây là bài làm đầu tiên được gửi vào email của tôi. Tuy chưa hoàn chỉnh lắm về cấu trúc OOP, nhưng với cấu trúc hàm, các hàm này đã làm việc khá hoàn chỉnh.

    - Đây là link cho bài tập của bạn ấy : http://muagibando.com/laytin.php

    <?php
        $page_source = file_get_contents("http://vnexpress.net/GL/Xa-hoi/&quot ;) ;
    
        $start = '<div class=\"folder-news\">';
        $end = "<\/div>";
        preg_match_all('/(?<='.$start.').*(?='.$end.')/msU',$page_source,$match);
    
            // Lay ra het may the <a>
            function theA($match){
                $start = '<a';
                $end = "<\/a>";
                preg_match_all('/(?<='.$start.').*(?='.$end.')/msU',$match,$theA);
    
                return $theA;
            }    
    
            // Lay link cua bai viet
            function linkBaiViet($theA){
                preg_match('/(?<=href=").*(?=">)/',$theA[0][0],$linkBaiViet); 
    
                return $linkBaiViet[0];
            }    
    
            function tenBaiViet($theA){
                preg_match('/(?<=>).*(?=)/',$theA[0][1],$tenBaiViet); 
    
                return $tenBaiViet[0];
            }
    
            /**********************************************************************************/
            function thoiGian($match){
                $start = '<label class=\"item-time\">';
                $end = '<\/label>';
                preg_match('/(?<='.$start.').*(?='.$end.')/',$match,$thoiGian);
                return $thoiGian[0];
            }
    
            function ngay($thoiGian){
                $thoiGian = str_replace(" ","",$thoiGian);
                $thoiGian = explode("|",$thoiGian);
    
                return trim($thoiGian[1]," ");
            }
    
            function gio($thoiGian){
                $thoiGian = str_replace(" ","",$thoiGian);
                $thoiGian = str_replace('</label><label class="item-date">',"",$thoiGian);
                $thoiGian = explode("|",$thoiGian);
    
                return trim($thoiGian[0]," ");
            }
    
            /*************************************************************************/
            function noiDung($match){
                $start = '<p>';
                $end = '<\/p>';
                preg_match('/(?<='.$start.').*(?='.$end.')/',$match,$theP);
                preg_match('/(?<=<a).*(?=<\a>)/',$theP[0],$lienKet);
                $lienKet = $lienKet[0];
    
                $content = str_replace($lienKet[0],"",$theP[0]);
                return $content."<br />".$lienKet;
            }
    $i=0;
    
    $vnExpress = array();
    while($match[0][$i]!=null){
    
            $tinTuc = array('Title' => tenBaiViet(theA($match[0][$i])),
                            'Link' => linkBaiViet(theA($match[0][$i])),
                            'Time' => gio(thoiGian($match[0][$i])),
                            'Date' => ngay(thoigian($match[0][$i])),
                            'Content' => noiDung($match[0][$i])
                            );
    
            if($tinTuc['Title']!=null){
                $vnExpress[$i] = $tinTuc;
            }
    
            $i++;
    }
        echo '<pre>';
        print_r($vnExpress);
        echo '</pre>'; 
    
     ?>
    
    • Cùng nhau vỗ tay hoan hô bạn có tên : llov3monk3y. Tôi sẽ định dạng lại các hàm này trở thành một OOP để mọi người có thể dễ dàng trực quan hơn. Tôi cố tình kéo dài thời gian cho bài này, nhưng cho đến nay chỉ có 1 người thử làm nó mà thôi.

      Cùng cố gắng đưa ra code của mình, để cùng nhau thấy sai, để cùng nhau sửa nào. Tôi muốn hoàn hỉnh code này dựa vào những hàm mà bạn đã viết.

  9. lds_tny says:

    Anh ơi! Em cảm ơn anh nhiều nhé!
    Anh có thể có một video tạo một trang đăng kí hoàn chỉnh đúng chuẫn của nó được không, trang đó bắt tất cả các lỗi mà người dùng nhập không đúng chuẫn rồi thông báo lỗi lên phía trên mỗi type(text,password). Anh cố gắng nha!\
    Cảm ơn anh, cảm ơn izwebz.com

  10. vietpnk53 says:

    em đang cố lấy mẩu tin…em thấy bài này rất hay…nếu được em thấy anh nên viết 1 video về bài này..:)

  11. CanIuG says:

    Cảm ơn A CSmith nhiều ..
    Chúc Izwebz phát triển .tất cả đóng góp cho Izwebz

  12. Lê Thị Vân says:

    Các anh ơi cho em tham gia với. Em muốn học lập trình web bằng PHP nhưng hoc không được, được biết trang web của các anh có các video dạy về PHP rất hay, em muốn tham gia học cùng. chủ yếu là học hỏi thôi chứ em cũng chưa biết nhiều về PHP. anh có thể gửi cho em it tài liệu tự học về php đến mail cho em được không ạ, để em có thể bắt đầu học. Em cám ơn các anh trước nha. hihi
    mail của em là: levanuneti@gmail.com

    • Em có thể bắt đầu từ bài 1 mà không cần một tài liệu nào về PHP cả. Tài liệu duy nhất em nên đọc là kỹ năng lập trình. Em hãy tìm kiếm trên mạng, anh nghĩ có rất nhiều. Welcome em

  13. qthien says:

    rat cam on ! minh doi cai ban 11 path 2 nay da 1 thang roi` :D hom nay moi thay dug la ko con gi de noi ngoai 2 tu cam on

  14. grace says:

    Cảm ơn tác giả của trang web này, cảm ơn anh CS về serie PHP.
    Chúc website ngày càng phát triển. Chúc các anh mọi đều tốt lành!

  15. heonai says:

    cám ơn các anh đã post video, các anh thật nhiệt tình. Mong là sẽ có thêm nhiều TUT hay mà các anh sẽ chia sẻ cho các anh em học hỏi. Thanks các anh rất nhiều!

  16. zazuzau says:

    Cảm ơn tác giả nhé! Bài viết công phu lắm! Tiếp tục nhé bạn! :D

  17. Minh Đức says:

    Rất cảm ơn

  18. kaks says:

    vê vấn đề chia sẻ kiến thức .mấy ông sống nước ngoài có vẻ rất nhiệt tình ,không dấu nghề ! thank much !

  19. balatumka says:

    Các bác cho em nếu hỏi nếu mấy video ở izwebz mà xuất ở dạng *.swf thì dung lượng có nhỏ hơn không, chứa mấy file mp4 hay avi dung lượng vừa lớn download xuống cũng mệt, mà người upload lên không biết có mệt không.

  20. Mưa tháng 7 says:

    Thank anh một phát để lấy tinh thần ^ ^

  21. Kim Danh says:

    Em chờ mãi anh uj, bi giờ mới có, thank anh rất rất nhiều!

  22. vietpn says:

    yeh! em đợi phần 2 lâu lắm rồi…cảm ơn anh.

  23. _NVS_ says:

    Cảm ơn anh về bài viết bổ ích này

  1. BB
  2. BB
  3. BB

arrow

Lưu ý khi post comment:

  • Không "bóc tem" topic
  • Dùng lời lẽ có văn hoá và lịch sự
  • Xem trang FAQs trước khi hỏi
  • Bạn có thể dùng thẻ HTML như:<strong>, <em>, <a>
  • Đặt code trong thẻ [php],[html],[javascript],[css]

Chọn kiểu gõ: Tự động TELEX VNI Tắt