Hàm sscanf() trong PHP

Mô hình

Phân tích chuỗi:

<?php
$str = "age:30 weight:60kg";
sscanf($str,"age:%d weight:%dkg",$age,$weight);
// Hiển thị loại và giá trị
var_dump($age,$weight);
?>

Chạy ví dụ

Định nghĩa và cách sử dụng

Hàm sscanf() phân tích từ chuỗi đầu vào dựa trên định dạng. Hàm sscanf() phân tích chuỗi từ chuỗi đầu vào dựa trên chuỗi định dạng.

Nếu chỉ truyền hai tham số cho hàm này, dữ liệu sẽ được trả về dưới dạng mảng. Nếu truyền thêm các tham số khác, dữ liệu được phân tích sẽ được lưu trữ trong các tham số này. Nếu số lượng dấu phân cách lớn hơn số lượng biến chứa chúng, sẽ xảy ra lỗi. Tuy nhiên, nếu số lượng dấu phân cách nhỏ hơn số lượng biến chứa chúng, các biến bổ sung sẽ chứa NULL.

Các hàm liên quan:

  • printf() - Xuất ra chuỗi định dạng.
  • sprintf() - Viết một chuỗi định dạng vào biến.

Cú pháp

sscanf(string,format,arg1,arg2,arg++)
Tham số Mô tả
string Chắc chắn. Định nghĩa chuỗi cần đọc.
format

Chắc chắn. Định nghĩa định dạng cần sử dụng.

Các giá trị định dạng có thể:

  • %% - Trả về một dấu phẩy phần trăm %
  • %c - Ký tự tương ứng với giá trị ASCII
  • %d - Số có dấu (+) hoặc (-) (số âm, 0, số dương)
  • %e - Sử dụng số học số dư nhỏ hơn (ví dụ 1.2e+2)
  • 蒬ố không có dấu (+) hoặc (-) (lớn hơn hoặc bằng 0)
  • %f - Số thập phân
  • %o - Số tám
  • %s - Chuỗi
  • %x - Số hexa (ký tự thường)
  • %X - Số hexa (chữ in hoa)

Giá trị định dạng bổ sung. Đúng cần đặt giữa % và chữ cái (ví dụ: %.2f)

  • + (thêm + hoặc - trước số để xác định tính dương hoặc âm của số. Mặc định chỉ có số âm được đánh dấu, số dương không được đánh dấu)
  • ' (định nghĩa điều gì được sử dụng làm độ lấp đầy, mặc định là khoảng trống. Nó phải được sử dụng cùng với chỉ số độ rộng.)
  • - (chỉnh trái giá trị biến)
  • .[0-9] (định nghĩa độ rộng tối thiểu của giá trị biến)
  • .[0-9] (định nghĩa số lượng chữ số thập phân hoặc độ dài tối đa của chuỗi)

Chú thích:Nếu sử dụng nhiều giá trị định dạng trên, chúng phải được sử dụng theo thứ tự trên.

arg1 Tùy chọn. Lưu trữ dữ liệu trong biến thứ nhất.
arg2 Tùy chọn. Lưu trữ dữ liệu trong biến thứ hai.
arg++ Tùy chọn. Lưu trữ dữ liệu trong biến thứ ba, bốn, v.v.

Chi tiết kỹ thuật

Giá trị trả về: Nếu chỉ truyền hai tham số cho hàm này, dữ liệu sẽ được trả về dưới dạng mảng. Nếu không, nếu truyền thêm các tham số khác, dữ liệu được phân tích sẽ được lưu trữ trong các tham số này. Nếu số lượng dấu phân cách lớn hơn số lượng biến chứa chúng, sẽ xảy ra lỗi. Tuy nhiên, nếu số lượng dấu phân cách nhỏ hơn số lượng biến chứa chúng, các biến bổ sung sẽ chứa NULL.
Phiên bản PHP: 4.0.1+

Thêm nhiều ví dụ

Ví dụ 1

Sử dụng giá trị định dạng %s, %d và %c:

<?php
$str = "If you divide 4 by 2 you'll get 2";
$format = sscanf($str,"%s %s %s %d %s %d %s %s %c");
print_r($format);
?>

Chạy ví dụ