Làm cách nào để định dạng một chuỗi trong PHP?

Cho đến bây giờ, chúng tôi chỉ cần in bất kỳ chuỗi nào mà chúng tôi muốn hiển thị trực tiếp trên trình duyệt. PHP cung cấp hai hàm cho phép bạn áp dụng định dạng trước tiên, cho dù làm tròn gấp đôi đến một số vị trí thập phân nhất định, xác định căn chỉnh trong một trường hoặc hiển thị dữ liệu theo các hệ thống số khác nhau. Trong phần này, bạn sẽ xem xét một vài tùy chọn định dạng được cung cấp bởi printf[] và sprintf[]

Làm việc với printf[]

Nếu bạn có bất kỳ kinh nghiệm nào với C, bạn sẽ quen thuộc với hàm printf[]. Phiên bản PHP tương tự nhưng không giống nhau. printf[] yêu cầu một đối số chuỗi, được gọi là chuỗi kiểm soát định dạng. Nó cũng chấp nhận các đối số bổ sung thuộc các loại khác nhau. Chuỗi kiểm soát định dạng chứa các hướng dẫn cho biết cách hiển thị các đối số bổ sung này. Ví dụ, đoạn mã sau sử dụng printf[] để xuất một số nguyên dưới dạng số thập phân

printf["This is my number: %d", 55];
// prints "This is my number: 55"

Trong chuỗi kiểm soát định dạng [đối số đầu tiên], chúng tôi đã bao gồm một mã đặc biệt, được gọi là đặc tả chuyển đổi

Đặc tả chuyển đổi bắt đầu bằng ký hiệu phần trăm [%] và xác định cách xử lý đối số tương ứng với printf[]. Bạn có thể bao gồm bao nhiêu thông số kỹ thuật chuyển đổi tùy thích trong chuỗi kiểm soát định dạng, miễn là bạn gửi một số lượng đối số tương đương tới printf[]

Đoạn mã sau xuất ra hai số bằng printf[]

printf["First number: %d
\nSecond number: %d
\n", 55, 66]; // Output: // First number: 55 // Second number: 66

Thông số chuyển đổi đầu tiên tương ứng với đối số đầu tiên trong số các đối số bổ sung cho printf[], là 55. Thông số kỹ thuật chuyển đổi thứ hai tương ứng với 66. Chữ d sau ký hiệu phần trăm yêu cầu dữ liệu được coi là số nguyên thập phân. Phần này của đặc tả chuyển đổi là một công cụ xác định loại

printf[] và Type Specifiers

Bạn đã bắt gặp một bộ xác định kiểu, d, hiển thị dữ liệu ở định dạng thập phân. Bảng 13. 1 liệt kê các chỉ định loại có sẵn khác

Bảng 13. 1. Loại Specifiers

d

Hiển thị đối số dưới dạng số thập phân

b

Hiển thị một số nguyên dưới dạng số nhị phân

c

Hiển thị một số nguyên dưới dạng tương đương ASCII

f

Hiển thị một số nguyên dưới dạng số dấu phẩy động [kép]

o

Hiển thị một số nguyên dưới dạng số bát phân [cơ số 8]

s

Hiển thị đối số dưới dạng chuỗi

x

Hiển thị một số nguyên dưới dạng số thập lục phân chữ thường [cơ số 16]

X

Hiển thị một số nguyên dưới dạng số thập lục phân viết hoa [cơ số 16]

Liệt kê 13. 1 sử dụng printf[] để hiển thị một số duy nhất theo một số chỉ định loại được liệt kê trong Bảng 13. 1

Liệt kê 13. 1 Minh họa một số Type Specifiers
  1: 
  2: 
  3: Listing 13.1 Demonstrating some type specifiers
  4: 
  5: 
  6: ", $number ];
  9: printf[ "Binary: %b
", $number ]; 10: printf[ "Double: %f
", $number ]; 11: printf[ "Octal: %o
", $number ]; 12: printf[ "String: %s
", $number ]; 13: printf[ "Hex [lower]: %x
", $number ]; 14: printf[ "Hex [upper]: %X
", $number ]; 15: ?> 16: 17:

Đặt những dòng này vào một tệp văn bản có tên là danh sách 13. 1. php và đặt tệp này vào gốc tài liệu máy chủ Web của bạn. Khi bạn truy cập tập lệnh này thông qua trình duyệt Web của mình, nó sẽ giống như Hình 13. 1. Như bạn có thể thấy, printf[] là một cách nhanh chóng để chuyển đổi dữ liệu từ hệ thống số này sang hệ thống số khác và xuất kết quả

Hình 13. 1. Thể hiện thông số chuyển đổi

Khi bạn chỉ định một màu trong HTML, bạn kết hợp ba số thập lục phân từ 00 đến FF, biểu thị các giá trị cho màu đỏ, xanh lá cây và xanh dương. Bạn có thể sử dụng printf[] để chuyển đổi ba số thập phân từ 0 đến 255 thành số thập lục phân tương đương của chúng

$red = 204;
$green = 204;
$blue = 204;
printf[ "#%X%X%X", $red, $green, $blue ];
// prints "#CCCCCC"

Mặc dù bạn có thể sử dụng trình xác định loại để chuyển đổi từ số thập phân sang số thập lục phân, nhưng bạn không thể sử dụng nó để xác định số lượng ký tự đầu ra cho mỗi đối số sẽ chiếm. Trong mã màu HTML, mỗi số thập lục phân phải được đệm thành hai ký tự, điều này sẽ trở thành vấn đề nếu chúng ta thay đổi các biến $red, $green và $blue trong đoạn mã trước thành chứa 1 chẳng hạn. Chúng tôi sẽ kết thúc với đầu ra "#111". Bạn có thể buộc đầu ra của các số 0 đứng đầu bằng cách sử dụng bộ xác định phần đệm

Đầu ra đệm với Bộ xác định đệm

Bạn có thể yêu cầu đầu ra đó được đệm bằng các ký tự đầu. Trình xác định phần đệm phải trực tiếp theo dấu phần trăm bắt đầu một đặc tả chuyển đổi. Để đệm đầu ra có số 0 đứng đầu, bộ xác định đệm phải bao gồm số 0 theo sau là số ký tự bạn muốn đầu ra chiếm. Nếu đầu ra chiếm ít ký tự hơn tổng số này, sự khác biệt sẽ được lấp đầy bằng số không

printf[ "%04d", 36 ];
// prints "0036"

Để đệm đầu ra có khoảng trắng ở đầu, bộ xác định đệm phải bao gồm một ký tự khoảng trắng theo sau là số lượng ký tự mà đầu ra sẽ chiếm

printf[ "% 4d", 36 ]
// prints " 36"

Trình duyệt sẽ không hiển thị nhiều khoảng trắng trong tài liệu HTML. Bạn có thể buộc hiển thị khoảng trắng và dòng mới bằng cách đặt

 tags around your output as follows:

Nếu bạn muốn định dạng toàn bộ tài liệu dưới dạng văn bản, bạn có thể sử dụng hàm header[] để thay đổi tiêu đề Kiểu nội dung

header["Content-Type: text/plain"];

Hãy nhớ rằng tập lệnh của bạn không được gửi bất kỳ đầu ra nào tới trình duyệt để hàm header[] hoạt động như mong muốn

Bạn có thể chỉ định bất kỳ ký tự nào ngoài khoảng trắng hoặc số 0 trong bộ xác định phần đệm của mình bằng một dấu ngoặc kép theo sau là ký tự bạn muốn sử dụng

________số 8

Bây giờ chúng tôi có các công cụ cần thiết để hoàn thành ví dụ về mã HTML của mình. Cho đến bây giờ, chúng tôi có thể chuyển đổi ba số, nhưng chúng tôi không thể đệm chúng bằng các số 0 ở đầu

$red = 1;
$green = 1;
$blue = 1;
printf[ "#%02X%02X%02X", $red, $green, $blue ];
// prints "#010101"

Mỗi biến được xuất ra dưới dạng số thập lục phân. Nếu đầu ra chiếm ít hơn hai khoảng trắng, các số 0 đứng đầu sẽ được thêm vào

Chỉ định Chiều rộng Trường

Bạn có thể chỉ định số lượng khoảng trống mà đầu ra của bạn sẽ nằm trong đó. Bộ xác định độ rộng trường là một số nguyên nên được đặt sau dấu phần trăm bắt đầu một đặc tả chuyển đổi [giả sử rằng không có bộ xác định phần đệm nào được xác định]. Đoạn mã sau xuất ra một danh sách gồm bốn mục, tất cả đều nằm trong một trường có 20 khoảng trắng. Để hiển thị khoảng trắng trên trình duyệt, chúng tôi đặt tất cả đầu ra của mình trong phần tử PRE

printf["First number: %d
\nSecond number: %d
\n", 55, 66]; // Output: // First number: 55 // Second number: 66
0";

Hình 13. 2 hiển thị đầu ra của đoạn mã này

Hình 13. 2. Căn chỉnh với các chỉ định độ rộng trường

Theo mặc định, đầu ra được căn phải trong trường bạn chỉ định. Bạn có thể làm cho nó được căn trái bằng cách thêm ký hiệu dấu trừ [?] vào phần xác định độ rộng trường

printf["First number: %d
\nSecond number: %d
\n", 55, 66]; // Output: // First number: 55 // Second number: 66
1

Lưu ý rằng căn chỉnh áp dụng cho phần thập phân của bất kỳ số nào bạn nhập. Nói cách khác, chỉ phần trước dấu thập phân của số kép mới nằm ngang hàng với phần cuối của chiều rộng trường khi được căn phải

Chỉ định chính xác

Nếu bạn muốn xuất dữ liệu ở định dạng dấu phẩy động, bạn có thể chỉ định độ chính xác mà bạn muốn làm tròn dữ liệu của mình. Khả năng này đặc biệt hữu ích khi bạn giao dịch với tiền tệ. Mã định danh chính xác phải được đặt trực tiếp trước mã xác định loại. Nó bao gồm một dấu chấm [. ] theo sau là số chữ số thập phân mà bạn muốn làm tròn. Trình xác định này chỉ có tác dụng đối với dữ liệu được xuất với trình xác định loại f

printf["First number: %d
\nSecond number: %d
\n", 55, 66]; // Output: // First number: 55 // Second number: 66
2

Trong ngôn ngữ C, bạn có thể sử dụng bộ xác định độ chính xác với printf[] để chỉ định phần đệm cho đầu ra thập phân. Trình xác định độ chính xác không ảnh hưởng đến đầu ra thập phân trong PHP. Sử dụng công cụ xác định phần đệm để thêm số 0 đứng đầu vào số nguyên


Thông số kỹ thuật chuyển đổi. Tóm tắt

Bảng 13. 2 liệt kê các trình xác định có thể tạo nên một đặc tả chuyển đổi theo thứ tự mà chúng sẽ được đưa vào. Lưu ý rằng rất khó để sử dụng cả bộ xác định đệm và bộ xác định độ rộng trường. Bạn nên chọn sử dụng cái này hoặc cái kia, nhưng không phải cả hai

Bảng 13. 2. Các thành phần của Đặc tả chuyển đổi

công cụ xác định phần đệm

Xác định số lượng ký tự mà đầu ra sẽ chiếm và các ký tự cần thêm nếu không

'4'

Công cụ xác định độ rộng trường

Xác định không gian trong đó đầu ra sẽ được định dạng

'20'

máy xác định độ chính xác

Xác định số vị trí thập phân mà một số kép sẽ được làm tròn

'. 4'

Loại xác định

Xác định kiểu dữ liệu sẽ được xuất ra

'd'

Liệt kê 13. 2 sử dụng printf[] để xuất danh sách sản phẩm và giá

Liệt kê 13. 2 Sử dụng printf[] để định dạng danh sách giá sản phẩm
printf["First number: %d
\nSecond number: %d
\n", 55, 66]; // Output: // First number: 55 // Second number: 66
3"]; 19. ?> 20. 21.

Trước tiên, chúng tôi xác định một mảng kết hợp chứa tên và giá sản phẩm trên dòng 8. Chúng tôi mở in phần tử PRE để trình duyệt nhận ra khoảng trắng và dòng mới của chúng tôi. Cuộc gọi printf[] đầu tiên của chúng tôi trên dòng 13 xác định chuỗi điều khiển định dạng sau

printf["First number: %d
\nSecond number: %d
\n", 55, 66]; // Output: // First number: 55 // Second number: 66
4

Đặc tả chuyển đổi đầu tiên ["%-20s"] sử dụng bộ xác định độ rộng trường gồm 20 ký tự, với đầu ra được căn trái. Chúng tôi sử dụng một trình xác định loại chuỗi. Thông số chuyển đổi thứ hai ["%23s"] thiết lập độ rộng trường được căn phải. Cuộc gọi printf[] này sẽ xuất ra các tiêu đề trường của chúng tôi

Lệnh gọi hàm printf[] thứ hai của chúng tôi trên dòng 14 vẽ một dòng - ký tự trên một trường gồm 43 ký tự. Chúng tôi đạt được kết quả này với một trình xác định phần đệm, bổ sung thêm phần đệm vào một chuỗi trống

Lệnh gọi printf[] cuối cùng trên dòng 16 là một phần của câu lệnh foreach lặp qua mảng sản phẩm của chúng ta. Chúng tôi sử dụng hai thông số kỹ thuật chuyển đổi. Đầu tiên ["%-20s"] in tên sản phẩm dưới dạng một chuỗi được căn trái trong trường 20 ký tự. Thông số chuyển đổi thứ hai ["%20. 2f"] sử dụng bộ xác định độ rộng trường để đảm bảo rằng đầu ra sẽ được căn phải trong trường 20 ký tự và bộ xác định độ chính xác để đảm bảo rằng số kép mà chúng tôi xuất ra được làm tròn đến hai chữ số thập phân

Đặt những dòng này vào một tệp văn bản có tên là danh sách13. 2. php và đặt tệp này vào gốc tài liệu máy chủ Web của bạn. Khi bạn truy cập tập lệnh này thông qua trình duyệt Web của mình, nó sẽ giống như Hình 13. 3

Hình 13. 3. Sản phẩm và giá được định dạng bằng printf[]

Hoán đổi đối số

Kể từ PHP 4. 0. 6, có thể sử dụng chuỗi kiểm soát định dạng để thay đổi thứ tự kết hợp các đối số đã cung cấp vào đầu ra

Ví dụ, hãy tưởng tượng rằng bạn đang in ngày lên trình duyệt. Bạn có ngày trong một mảng nhiều chiều và đang sử dụng printf[] để định dạng đầu ra

printf["First number: %d
\nSecond number: %d
\n", 55, 66]; // Output: // First number: 55 // Second number: 66
5

Trong đoạn mã trước, chúng tôi lấy chuỗi kiểm soát định dạng của mình từ một tệp bao gồm có tên local_format. php. Giả sử rằng tập tin này chỉ chứa những điều sau đây

printf["First number: %d
\nSecond number: %d
\n", 55, 66]; // Output: // First number: 55 // Second number: 66
6

Trong trường hợp đó, đầu ra của chúng tôi sẽ ở định dạng mm/dd/yyyy

printf["First number: %d
\nSecond number: %d
\n", 55, 66]; // Output: // First number: 55 // Second number: 66
7

Bây giờ hãy tưởng tượng rằng chúng tôi đang cài đặt tập lệnh của mình cho một trang web của Anh. Ở Vương quốc Anh, ngày thường được trình bày bằng ngày trước tháng [dd/mm/yyyy]. Không thể thay đổi mã lõi, nhưng các tệp cấu hình như local_format. php có thể. May mắn thay, giờ đây chúng ta có thể thay đổi thứ tự trình bày các đối số từ bên trong mã kiểm soát định dạng

printf["First number: %d
\nSecond number: %d
\n", 55, 66]; // Output: // First number: 55 // Second number: 66
8

Chúng tôi có thể chèn số đối số mà chúng tôi quan tâm sau ký tự phần trăm ban đầu đánh dấu từng thông số chuyển đổi, theo sau là ký tự đô la [$] thoát. Vì vậy, trong đoạn trích trước, chúng tôi yêu cầu trình bày đối số thứ hai, tiếp theo là đối số thứ nhất, tiếp theo là đối số thứ ba. Kết quả là một danh sách các ngày ở định dạng Anh

printf["First number: %d
\nSecond number: %d
\n", 55, 66]; // Output: // First number: 55 // Second number: 66
9

Lưu trữ một chuỗi được định dạng

Hàm printf[] xuất dữ liệu ra trình duyệt, điều đó có nghĩa là kết quả không có sẵn cho tập lệnh của bạn. Tuy nhiên, bạn có thể sử dụng hàm sprintf[], hàm này hoạt động giống hệt hàm printf[] ngoại trừ việc nó trả về một chuỗi mà sau đó bạn có thể lưu trữ trong một biến để sử dụng sau này. Đoạn mã sau sử dụng sprintf[] để làm tròn gấp đôi đến hai chữ số thập phân, lưu trữ kết quả trong $dosh

  1: 
  2: 
  3: Listing 13.1 Demonstrating some type specifiers
  4: 
  5: 
  6: ", $number ];
  9: printf[ "Binary: %b
", $number ]; 10: printf[ "Double: %f
", $number ]; 11: printf[ "Octal: %o
", $number ]; 12: printf[ "String: %s
", $number ]; 13: printf[ "Hex [lower]: %x
", $number ]; 14: printf[ "Hex [upper]: %X
", $number ]; 15: ?> 16: 17:
0

Một cách sử dụng cụ thể của sprintf[] là ghi dữ liệu được định dạng vào một tệp. Bạn có thể gọi sprintf[] và gán giá trị trả về của nó cho một biến mà sau đó có thể được in ra tệp bằng fputs[]

Làm cách nào để định dạng văn bản trong PHP?

Định dạng văn bản PHP không được thực hiện với PHP; . Bạn có thể làm điều này theo hai cách. Bạn có thể thêm HTML bên trong mã PHP hoặc bạn có thể thêm mã PHP bên trong HTML . Dù bằng cách nào, tệp phải được lưu dưới dạng.

%s trong PHP là gì?

Tham số

Làm cách nào để kiểm tra định dạng chuỗi trong PHP?

Hàm validateDate[] kiểm tra xem chuỗi đã cho có phải là ngày hợp lệ hay không bằng cách sử dụng PHP . Nó sử dụng lớp DateTime của PHP để xác thực ngày dựa trên định dạng đã chỉ định. Hàm này trả về TRUE nếu chuỗi ngày hợp lệ, nếu không thì FALSE.

Làm cách nào để định dạng một biến trong PHP?

Quy tắc cho các biến PHP. .
Một biến bắt đầu bằng dấu $, theo sau là tên của biến
Tên biến phải bắt đầu bằng một chữ cái hoặc ký tự gạch dưới
Tên biến không được bắt đầu bằng số
Tên biến chỉ có thể chứa các ký tự chữ và số và dấu gạch dưới [A-z, 0-9 và _ ]

Chủ Đề