Hiển thị kết quả từ 1 đến 9 / 9
  1. #1
    Tham gia
    11-04-2009
    Location
    Quận 7
    Bài viết
    819
    Like
    23
    Thanked 45 Times in 37 Posts

    php chỉ giáo phần làm việc với file

    mình định làm một số ứng dụng php nhưng không muốn làm việc với MySQL là mấy

    em đang vướng phần code để xóa 1 dòng bất kỳ trong file txt

    VD em có file List.txt
    Code:
    1==||==khuc hat hanh quan
    2==||==Ly nang oi
    3==||==Bai ca nam thang
    Giờ em code thế nào để nó del dòng 2 nhỉ mà ko del mấy dòng kia

    giúp mình tí với
    Quote Quote

  2. #2
    Tham gia
    07-09-2006
    Bài viết
    295
    Like
    0
    Thanked 2 Times in 2 Posts
    Trước hết bạn cần lấy tất cả thông tin ra (có thể dùng file_get_contents() hoặc readfile() ... cho vào 1 biến, tiếp đến lọc những gì bạn cần xóa ra khỏi biến và rewrite lại file.
    Code thì có thể giống thế này ... còn lại bạn tự giải quyết tiếp ...
    <?php
    /*
    1==||==khuc hat hanh quan
    2==||==Ly nang oi
    3==||==Bai ca nam thang
    */
    function ncutchar_file($item, $file){
    $str = file_get_contents($file);
    $exp = explode("==||==", $str);
    foreach($exp as $k => $v){
    if($v != $item){
    $newStr[] = $v;
    }
    }
    return implode("==||==", $newStr);
    }
    $content = ncutchar_file("khuc hat hanh quan", "test.txt");
    // đến đây thì rewrite file ...
    ?>

  3. #3
    Tham gia
    28-02-2008
    Location
    Hồ Chí Minh Việt Nam
    Bài viết
    1,898
    Like
    439
    Thanked 67 Times in 59 Posts
    OK, Thank bác nhé !!!

  4. #4
    Tham gia
    20-12-2003
    Bài viết
    154
    Like
    0
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi kenphan19 View Post
    Trước hết bạn cần lấy tất cả thông tin ra (có thể dùng file_get_contents() hoặc readfile() ... cho vào 1 biến, tiếp đến lọc những gì bạn cần xóa ra khỏi biến và rewrite lại file.
    Code thì có thể giống thế này ... còn lại bạn tự giải quyết tiếp ...
    Ko bik bác có xem lại cái function bác viết ko, chứ tui thấy nó ko ổn và ko chạy dc và nếu dc sẽ ra hog đúng theo yêu cầu của chủ topic. Edit lại chút

    Code:
    <?php
    /*
    1==||==khuc hat hanh quan
    2==||==Ly nang oi
    3==||==Bai ca nam thang
    */
    function ncutchar_file($file, $line){
    	$str = file_get_contents($file);
    	$exp = explode("\n", $str);
    	$line--;	
    	$newStr = "";;
    	foreach($exp as $k => $v){
    		if( $k != $line )
    			$newStr .= trim($v)."\n";
    	}
    	return $newStr;
    }
    $content = ncutchar_file( "data.txt", 2);
    // đến đây thì rewrite file ...
    
    echo $content;
    ?>

  5. #5
    Tham gia
    07-09-2006
    Bài viết
    295
    Like
    0
    Thanked 2 Times in 2 Posts
    tớ viết nhưng chưa test mà ... chủ yếu là thuật toán thui muz` ... chủ topic hĩu cách làm là okie oy`

  6. #6
    Tham gia
    22-07-2003
    Location
    TP. Hồ Chí Minh
    Bài viết
    151
    Like
    0
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi kenphan19 View Post
    tớ viết nhưng chưa test mà ... chủ yếu là thuật toán thui muz` ... chủ topic hĩu cách làm là okie oy`
    Stress nặng rùi, cho tám xíu:

    Thay vì lưu như vậy có thể dùng array và serialize/unserialize hay var_export sẽ nhẹ nhàng hơn. VD:

    // sample:

    $songs = array(
    1 => array('name1', 'author1'),
    2 => array('name2', 'author2'),
    3 => array('name3', 'author3')
    );

    // commit
    file_put_contents('songs.php', '<?php $songs = ' . var_export($songs, true) . ';');

    // usage:

    include_once 'songs.php';

    // do something with $songs

    fun,

  7. #7
    Tham gia
    11-04-2009
    Location
    Quận 7
    Bài viết
    819
    Like
    23
    Thanked 45 Times in 37 Posts
    thank mấy bạn mình làm được rồi

    [=========> Bổ sung bài viết <=========]

    ảm ơn nhiều nhiều nha
    Được sửa bởi imchicken lúc 20:23 ngày 29-04-2009 Reason: Bổ sung bài viết

  8. #8
    Tham gia
    05-11-2006
    Location
    Bố Liêu, Quảng Trị.
    Bài viết
    191
    Like
    0
    Thanked 0 Times in 0 Posts
    Lúc trước mình đã viết nhiều website dùng file để lưu data khá lớn và phức tạp (do lúc đó chưa vững sql lắm).
    Bạn nên tạo cấu trúc chuẩn cho csdl của bạn,

    Cấu trúc tớ thường dùng là:
    COL1_ROW1|COL2_ROW1|COL3_ROW1|...\n
    COL1_ROW2|COL2_ROW2|COL3_ROW2|...\n
    ...
    Nó cũng tương tự cấu trúc table của sql

    Để khai thác dữ liệu bạn dùng hàm $data = file() nó sẻ đọc data file ra mãng (mỗi line là một phần tử của mãng)
    sau đó dùng tiếp explode("|", $data[$n]); để tách col
    Để tránh lỗi cấu trúc dữ liệu bạn nên dùng hàm urlencode() để mã hóa các ký tự đặc biệt dữ liệu (như ký tự xuống dòng và "|").

    sau đây là ví dụ:
    PHP Code:
    // File mydata.txt
    01|Tinh+thoi+xot+xa|Lam+truong|Tu+khi+quen+em+anh+da.....|
    02|Con+duong+mau+xanh|Le+hieu|Nay+nguoi+yeu+xin+quay+mat+di.....|


    // Request: ?id=1 để xem bài tình thôi xót xa
    $data file("mydata.txt");
    for(
    $a 0$a count($data); $a++) {
      
    $part explode("|"$data***91;$a***93;);
      if(
    $part***91;0***93; == $_GET***91;'id'***93;) echo "Bài hát: " $part***91;1***93;, "<br>Ca sĩ trình bày: "$part***91;2***93;, "<p>Lời bài hát:<br>"$part***91;3***93;;


  9. #9
    Tham gia
    01-08-2008
    Location
    *_*
    Bài viết
    675
    Like
    0
    Thanked 1 Time in 1 Post
    Quote Được gửi bởi hackson View Post
    Lúc trước mình đã viết nhiều website dùng file để lưu data khá lớn và phức tạp (do lúc đó chưa vững sql lắm).
    Bạn nên tạo cấu trúc chuẩn cho csdl của bạn,

    Cấu trúc tớ thường dùng là:
    COL1_ROW1|COL2_ROW1|COL3_ROW1|...\n
    COL1_ROW2|COL2_ROW2|COL3_ROW2|...\n
    ...
    Nó cũng tương tự cấu trúc table của sql

    Để khai thác dữ liệu bạn dùng hàm $data = file() nó sẻ đọc data file ra mãng (mỗi line là một phần tử của mãng)
    sau đó dùng tiếp explode("|", $data[$n]); để tách col
    Để tránh lỗi cấu trúc dữ liệu bạn nên dùng hàm urlencode() để mã hóa các ký tự đặc biệt dữ liệu (như ký tự xuống dòng và "|").

    sau đây là ví dụ:
    PHP Code:
    // File mydata.txt
    01|Tinh+thoi+xot+xa|Lam+truong|Tu+khi+quen+em+anh+da.....|
    02|Con+duong+mau+xanh|Le+hieu|Nay+nguoi+yeu+xin+quay+mat+di.....|


    // Request: ?id=1 để xem bài tình thôi xót xa
    $data file("mydata.txt");
    for(
    $a 0$a count($data); $a++) {
      
    $part explode("|"$data***91;$a***93;);
      if(
    $part***91;0***93; == $_GET***91;'id'***93;) echo "Bài hát: " $part***91;1***93;, "<br>Ca sĩ trình bày: "$part***91;2***93;, "<p>Lời bài hát:<br>"$part***91;3***93;;

    DB tự chế thì chỉ dể dùng cho web nho nhỏ thoai, vả lại tốc độ cũng sẽ ko bằng dbms chuyên nghiệp (do nó cho phép lập index).

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •