Định nghĩa và cách sử dụng
Hàm fscanf() phân tích cú pháp đầu vào từ một tệp đang mở theo định dạng đã chỉ định. Lưu ý: Bất kỳ khoảng trắng nào trong chuỗi định dạng khớp với bất kỳ khoảng trắng nào trong luồng đầu vào. Điều này có nghĩa là một tab (\ t) trong chuỗi định dạng có thể khớp với một ký tự khoảng trắng trong luồng đầu vào.
Cú pháp.
Cú pháp:
fscanf(file, format, mixed)
Trong đó.
Tham số |
Mô tả |
file |
File cần kiểm tra. |
format |
Chỉ định định dạng. Giá trị định dạng có thể:
- %% – Trả về một dấu phần trăm
- %b – Số Binary
- %c – Ký tự theo giá trị ASCII
- %d – Số thập phân đã Signed
- %e – Ký hiệu khoa học (ví dụ: 1,2e + 2)
- %u – Số thập phân Unsigned
- %f – Số dấu phẩy động (nhận biết cài đặt cục bộ)
- %F – Số dấu phẩy động (không nhận biết cài đặt cục bộ)
- %o – Số bát phân
- %s – Chuỗi
- %x – Số thập lục phân (chữ thường)
- %X – Số thập lục phân (chữ hoa)
Giá trị định dạng bổ sung. Chúng được đặt giữa% và chữ cái (ví dụ% .2f)
- + (Buộc cả + và – trước các số. Theo mặc định, chỉ các số âm được đánh dấu)
- ‘ (Chỉ định những gì sẽ sử dụng làm phần đệm. Mặc định là không gian. Phải được sử dụng cùng với phần xác định chiều rộng. Ví dụ:% ‘x20s (phần này sử dụng “x” làm phần đệm)
- – (Còn lại chỉ giá trị của biến)
- [0-9] (Chỉ định chiều rộng tối thiểu được giữ cho giá trị biến)
- .[0-9] (Chỉ định số chữ số thập phân hoặc độ dài chuỗi tối đa)
Note: Nếu nhiều giá trị định dạng bổ sung được sử dụng, chúng phải theo cùng thứ tự như trên. |
mixed |
Không bắt buộc. |
Giá trị trả về.
- Nếu chỉ có hai tham số được truyền cho hàm này, các giá trị được phân tích cú pháp sẽ được trả về dưới dạng một mảng. Mặt khác, nếu các tham số tùy chọn được thông qua, hàm sẽ trả về số lượng giá trị được gán. Các tham số tùy chọn phải được thông qua tham chiếu.
Ví dụ.
Ví dụ # 1 fscanf () đơn giản
code:
?php
$handle = fopen("users.txt", "r");
while ($userinfo = fscanf($handle, "%s\t%s\t%s\n")) {
list ($name, $profession, $countrycode) = $userinfo;
//... do something with the values
}
fclose($handle);
?>
Ví dụ # 2 Nội dung của users.txt
javier argonaut pe
hiroshi sculptor jp
robert slacker us
luigi florist it
Hàm liên quan.
- fread() – Binary-safe file read
- fgets() – Gets line from file pointer
- fgetss() – Gets line from file pointer and strip HTML tags
- sscanf() – Parses input from a string according to a format
- printf() – Output a formatted string
- sprintf() – Return a formatted string
Thông tin thêm.
- Dành cho lập trình viên C / C ++. fscanf () không hoạt động như C / C ++, vì fscanf () di chuyển con trỏ tệp của dòng tiếp theo.
- Nó sẽ là tuyệt vời để chính xác trong tài liệu fscanf mà một cuộc gọi đến hàm, đọc một dòng hoàn chỉnh. và không chỉ số lượng giá trị được xác định trong định dạng. Nếu một tệp văn bản chứa 2 dòng, mỗi dòng chứa 4 giá trị nguyên, đọc tệp với 8 fscanf ($ fd, “% d”, $ v) không chạy! Bạn phải làm 2 fscanf ($ fd, “% d% d% d% d”, $ v1, $ v2, $ v3, $ v4);
- Nếu bạn muốn phân tích một tệp cron, bạn có thể sử dụng mẫu này:
<?php
while ($cron = fscanf($fp, "%s %s %s %s %s %[^\n]s"))
{
}
?>
- Một chức năng khác để đọc một tệp và trả về một bản ghi / chuỗi bởi một dấu phân cách. Nó rất giống với fgets () với dấu phân cách là một tham số bổ sung. Hoạt động tuyệt vời trên nhiều dòng.
function fgetd(&$rFile, $sDelim, $iBuffer=1024) {
$sRecord = '';
while(!feof($rFile)) {
$iPos = strpos($sRecord, $sDelim);
if ($iPos === false) {
$sRecord .= fread($rFile, $iBuffer);
} else {
fseek($rFile, 0-strlen($sRecord)+$iPos+strlen($sDelim), SEEK_CUR);
return substr($sRecord, 0, $iPos);
}
}
return false;
}
Các bạn có thể xem chi tiết hơn trên php.net.
Hi vọng với bài viết này, bạn đã hiểu rõ ứng dụng của hàm fscanf() trong PHP. Nếu bạn thấy bài viết hay và có ý nghĩa hãy like và chia sẻ bài viết này để mọi người cùng nhau học tập nhé. Cảm ơn các bạn đã ghé thăm codetutam.com
Bình luận: