PDA

View Full Version : code lọc ký tự



lehung_tk16
22-11-2006, 11:07
em có 1 file gồm 3 dòng
file 1:

aaaaa1111
aaaaa111122222
bbbbb11111111111111

muốn lọc file đó để cho những dòng nào có 3 từ đầu tiên giống nhau thì del đi
như file trên kia thành
file 2:

aaaaa1111
bbbbb11111111111111

thì phải làm sao ah?
mong mọi người giúp đỡ

kid08
22-11-2006, 12:09
chưa hỉu ý bạn lắm, bạn nói hơn đc lko :)

nkkha
22-11-2006, 12:26
Bạn phải nói chính xác ý định của bạn...
Nếu bạn nói như thế thì khó hiểu lắm... Hơn nữa, bạn phải nói là bạn sử dụng ngôn ngữ nào??

lehung_tk16
22-11-2006, 12:56
mình muốn sử dụng php
ý mình là muốn khi run cái code đó thì file 1 thành file 2
tức là lọc trong file cái dòng mà nó có 3 ký tự đầu tiên trùng với 3 ký tự đầu của file ở trên , nếu lặp lại 3 ký tự đầu như dòng trên thì del cả dòng đó đi

anhtuannd
22-11-2006, 13:50
mình muốn sử dụng php
ý mình là muốn khi run cái code đó thì file 1 thành file 2
tức là lọc trong file cái dòng mà nó có 3 ký tự đầu tiên trùng với 3 ký tự đầu của file ở trên , nếu lặp lại 3 ký tự đầu như dòng trên thì del cả dòng đó đi
Khó hiểu quá, có phải là do có đoạn aaaaa giống dòng bên trên nên dòng ấy bị xóa ko?

lehung_tk16
22-11-2006, 14:07
tức là thế nè
có 1 file có nội dung


1112222
1112222
aaabbb

khi run cái code thì nội dung file đó còn


111222
aaabbb

ý mình muốn là cái code sẽ lọc ký tự ở dòng tiếp theo , nếu dòng tiếp theo có 3 ký tự đầu tiên giống 3 ký tự đầu tiên của dòng trước nó thì del dòng đó đi

kid08
22-11-2006, 17:23
bạn dùng hàm substr để lấy 3 kí tự đầu tiên của 2 dòng rồi so sánh với nhau là OK

lehung_tk16
22-11-2006, 17:32
nói cụ thể hơn đuợc ko . ai exp hộ em cái code cái :|

TheHeTre
22-11-2006, 22:23
Mình nhìn thấy từ chiều nhưng h mới có thời gian trả lời cho bạn. Cách sử lý là dùng mảng trung gian và mang chính nó ra so sánh:

$second: Mảng trung gian
$f ---> Mảng ban đầu và đến cuối chính là mảng cuối được lọc:



$filename = "file.txt";
$f = file($filename);
$second = array();

for($i = 0; $i<=count($f)-1; $i++){
if(in_array(substr($f[$i],0,3), $second) == true) unset($f[$i]);
else $second[$i] = substr($f[$i],0,3);
}

//---> Tra ve mang ban dau voi yeu cau da duoc thuc hien
//Mang $f;



Rồi, h ghi mảng này ra file. Máu lên code luôn:


$fopen = fopen($filename,"w");
if(is_writable($filename)){
for($i=0; $i<=count($f)-1;$i++){
fwrite($fopen,$f[$i]."\n");
}
}
else{
echo "File Cannot Write";
}
fclose($f);


Có j không hiểu thì PM nhé!

qthuong
12-12-2006, 22:36
khó hiểu quá đi mình mới tìm hiểu về php mong bạn chỉ giáo kỹ
cho mình cảm ơn.
trong ASP co hàm left(); right(); trim(); bên PHP co hàm nào tương tự không vậy.

qthuong
12-12-2006, 22:37
có thể bạn viết ra một hàm hoàn chỉ cho mình.
thanks a lot.

anhtuannd
12-12-2006, 23:22
khó hiểu quá đi mình mới tìm hiểu về php mong bạn chỉ giáo kỹ
cho mình cảm ơn.
trong ASP co hàm left(); right(); trim(); bên PHP co hàm nào tương tự không vậy.
Tôi ko biết ASP, nhưng left() và right() của ASP chắc tương đương với substr(), còn hàm trim() của 2 thằng như nhau.
Bác THT bên trên đã trả lời chi tiết vậy còn gì?