Hàm vsprintf() trong PHP

Mô hình

Ghi chuỗi định dạng vào biến:

<?php
$number = 9;
$str = "Beijing";
$txt = vsprintf("Có 탢ệu xe đạp trong %s.", array($number, $str));
echo $txt;
?>

Chạy ví dụ

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

Hàm vsprintf() ghi chuỗi định dạng vào biến.

Khác với sprintf(), các tham số trong vsprintf() được đặt trong mảng. Các phần tử mảng sẽ được chèn vào các ký hiệu (%) trong chuỗi chính. Hàm này được thực hiện theo từng bước. Tại ký hiệu % đầu tiên, chèn phần tử mảng đầu tiên, tại ký hiệu % thứ hai, chèn phần tử mảng thứ hai, và thế tiếp theo.

Ghi chú:Nếu dấu % nhiều hơn arg Nếu có tham số, bạn phải sử dụng dấu chèn. Dấu chèn được chèn sau dấu %, bao gồm số và "\$". Xem ví dụ 2.

Lưu ý:Các hàm liên quan:

Cú pháp

vsprintf(Định dạng,argarray)
Tham số Mô tả
Định dạng

Bắt buộc. Định nghĩa chuỗi và cách định dạng các biến trong nó.

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

  • %% - Trả về một dấu %
  • %b - Số nhị phân
  • %c - Ký tự tương ứng với giá trị ASCII
  • %d - Số thập phân chứa dấu + hoặc - (số âm, 0, số dương)
  • %e - Sử dụng hệ số lũy thừa in thường (ví dụ 1.2e+2)
  • %E - Sử dụng hệ số lũy thừa in hoa (ví dụ 1.2E+2)
  • 蒬ố thập phân không chứa dấu + hoặc - (lớn hơn hoặc bằng 0)
  • %f - Số thập phân (cài đặt cục bộ)
  • %F - Số thập phân (không phải cài đặt cục bộ)
  • %g - Ngắn hơn %e và %f
  • %G - Ngắn hơn %E và %f
  • %o - Số tám
  • %s - Chuỗi
  • %x - Số thập lục phân (ký tự in thường)
  • %X - Số thập lục phân (ký tự in hoa)

Giá trị định dạng bổ sung. Bắt buộc phải đặt giữa % và chữ cái (ví dụ: %.2f):

  • + (Đặt + 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 gì được sử dụng làm giá trị lấp đầy, mặc định là khoảng trống. Nó phải được sử dụng cùng với bộ số đo chiều rộng. Ví dụ: '%'x20s (sử dụng "x" làm giá trị lấp đầy))
  • - (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 chuỗi tối đa)

Ghi 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, không được xáo trộn.

argarray Bắt buộc. Một mảng chứa các tham số, chúng sẽ được chèn vào Định dạng Ở ký tự % trong chuỗi.

Chi tiết kỹ thuật

Giá trị trả về: Trả về giá trị mảng dưới dạng chuỗi định dạng.
Phiên bản PHP: 4.1.0+

Các ví dụ khác

Ví dụ 1

Sử dụng giá trị định dạng %f:

<?php
$num1 = 123;
$num2 = 456;
$txt = vsprintf("%f%f",array($num1,$num2));
echo $txt;
?>

Chạy ví dụ

Ví dụ 2

Sử dụng dấu đặt chỗ:

<?php
$number = 123;
$txt = vsprintf("Có hai chữ số thập phân:%1\$.2f<br>Không có chữ số thập phân:%1\$u",array($number));
echo $txt;
?>

Chạy ví dụ

Ví dụ 3

Sử dụng sprintf() để演示 tất cả các giá trị định dạng có thể:

<?php
$num1 = 123456789;
$num2 = -123456789;
$char = 50; // ASCII 字符 50 là 2
// 注释:格式值 "%%" 返回百分号
echo sprintf("%%b = %b",$num1)."<br>"; // 二进制数
echo sprintf("%%c = %c",$char)."<br>"; // ASCII 字符
echo sprintf("%%d = %d",$num1)."<br>"; // 带符号的十进制数
echo sprintf("%%d = %d",$num2)."<br>"; // 带符号的十进制数
echo sprintf("%%e = %e",$num1)."<br>"; // 科学计数法(小写)
echo sprintf("%%E = %E",$num1)."<br>"; // 科学计数法(大写)
echo sprintf("%鑾u",$num1)."<br>"; // 不带符号的十进制数(正)
echo sprintf("%鑾u",$num2)."<br>"; // 不带符号的十进制数(负)
echo sprintf("%%f = %f",$num1)."<br>"; // 浮点数(视本地设置)
echo sprintf("%%F = %F",$num1)."<br>"; // 浮点数(不视本地设置)
echo sprintf("%%g = %g",$num1)."<br>"; // 短于 %e 和 %f
echo sprintf("%%G = %G",$num1)."<br>"; // 短于 %E 和 %f
echo sprintf("%%o = %o",$num1)."<br>"; // 八进制数
echo sprintf("%%s = %s",$num1)."<br>"; // 字符串
echo sprintf("%%x = %x",$num1)."<br>"; // Số hexa (chữ thường)
echo sprintf("%%X = %X",$num1)."<br>"; // Số hexa (chữ hoa)
echo sprintf("%%+d = %+d",$num1)."<br>"; // Ký hiệu chỉ số (dương)
echo sprintf("%%+d = %+d",$num2)."<br>"; // Ký hiệu chỉ số (âm)
?>

Chạy ví dụ

Ví dụ 4

Giải thích về ký hiệu chuỗi:

<?php
$str1 = "Hello";
$str2 = "Hello world!";
echo vsprintf("[%s]",array($str1))."<br>";
echo vsprintf("[%8s]",array($str1))."<br>";
echo vsprintf("[%-8s]",array($str1))."<br>";
echo vsprintf("[%08s]",array($str1))."<br>";
echo vsprintf("[%'*8s]",array($str1))."<br>";
echo vsprintf("[%8.8s]",array($str2))."<br>";
?>

Chạy ví dụ