Rất có thể bạn đã thấy các chuỗi ký tự dài được định dạng theo mẫu trong đó có dấu cách hoặc dấu gạch ngang ở các khoảng bằng nhau sau một số ký tự cụ thể. Các chuỗi như vậy có thể là số, chữ cái hoặc chữ số
Ví dụ về các chuỗi như vậy là khóa kích hoạt sản phẩm phần mềm hoặc số mã thông báo được chuẩn bị bằng điện
ví dụ 1. Khóa sản phẩm Windows
W269N-WFGWX-YVC9B-4J6C9-T83GX
ví dụ 2. Khóa nối tiếp Photoshop CC
1045-1656-1984-6490-5561-5688
ví dụ 3. Mã thông báo trả trước điện
6664-1046-1710-0096-8674
Ví dụ 4. khóa bảo mật kaspersky
CXWPP-HYMRP-VBSPP-TP787
Vui lòng lưu ý rằng ở trên không phải là các khóa có thể sử dụng được mà chỉ nhằm mục đích trình diễn trên định dạng chung
Không có dấu gạch ngang trong đó, các mã trên sẽ rất khó đọc. Dấu gạch ngang hoặc khoảng trắng ở giữa giúp cải thiện khả năng đọc thay vì xem mã dưới dạng một khối văn bản dài
Tôi đã từng được các nhà phát triển đồng nghiệp hỏi cách định dạng chuỗi theo cách như vậy. Tôi cũng đã từng gặp phải những thách thức khi lần đầu tiên muốn thực hiện định dạng như vậy
Vì lý do đó, tôi viết bài này để giúp bạn, những người có thể tự hỏi làm thế nào để làm điều đó. Chúng tôi sẽ làm điều đó bằng cách sử dụng PHP trong bài viết này
Chúng tôi sẽ làm điều đó bằng hai phương pháp khác nhau
- Sử dụng các hàm
str_split[]
vàimplode[]
- Sử dụng chức năng
wordwrap[]
1. Sử dụng các hàm str_split[] và implode[]
Chúng tôi sử dụng hàm str_split[]
để chia chuỗi của chúng tôi thành một mảng các chuỗi con có độ dài bằng nhau
đầu ra
Mảng [
[0] => ABCD
[1] => EFGH
[2] =
[3] => MNOP
[4] => QRST
[5] => UVWX
[6] => YZ
]
Giải trình
str_split[$string, 4]
Từ ví dụ của chúng tôi ở trên, str_split[] nhận hai đối số. Đầu tiên là chuỗi chúng tôi muốn tách và thứ hai là độ dài của mỗi phần tử chuỗi con/mảng mà chúng tôi muốn tách chuỗi của mình thành
Trong trường hợp của chúng tôi, chúng tôi đã sử dụng các bảng chữ cái làm chuỗi [$string] và 4 làm độ dài của các chuỗi con. Như bạn có thể thấy từ đầu ra ở trên, chúng tôi đã tạo một mảng với mỗi chỉ mục có giá trị 4 ký tự ngoài chỉ mục cuối cùng vì chúng tôi không có nhiều ký tự hơn để tạo thành bốn ký tự
Trong ví dụ của chúng tôi, vì chúng tôi đã tách chuỗi sau mỗi ký tự thứ 4, nên chúng tôi sẽ thêm dấu gạch ngang/dấu gạch ngang sau mỗi ký tự thứ 4. Bạn có thể sử dụng bất kỳ độ dài nào khác, chẳng hạn như 2, 3, 5, v.v. tùy thuộc vào vị trí bạn muốn chèn dấu gạch ngang miễn là độ dài bạn chọn không vượt quá độ dài chuỗi
Trong trường hợp bạn không chỉ định độ dài trong hàm str_split[] và chuyển chuỗi làm đối số duy nhất, chuỗi sẽ được phân tách sau mỗi ký tự theo mặc định
Bước tiếp theo sẽ là chuyển đổi mảng trở lại thành chuỗi, lần này thêm dấu gạch ngang sau ký tự thứ tư
Để đạt được điều đó, chúng ta sẽ sử dụng hàm implode[]
Chúng tôi sẽ truyền hai đối số cho nó. Cái đầu tiên chỉ định ký tự nào chúng ta muốn chèn vào chuỗi mới và cái thứ hai là mảng
đầu ra
ABCD-EFGH-IJKL-MNOP-QRST-UVWX-YZ
Chúng ta có thể rút ngắn phần trên thành một dòng như bên dưới và đầu ra sẽ giống nhau
Để định dạng chuỗi của bạn, tất cả những gì bạn cần là thay thế các bảng chữ cái bằng chuỗi ký tự của bạn [có thể là số, chữ và số hoặc chữ cái], sau đó thay thế 4 bằng khoảng thời gian mà bạn muốn chèn dấu gạch ngang
Nếu bạn muốn chèn khoảng trắng hoặc ký tự khác thay vì dấu gạch ngang, chỉ cần thay dấu gạch ngang trong hàm implode[] trong dấu ngoặc kép
Ghi chú. Tham gia là bí danh của Implode. Nếu bạn muốn, bạn cũng có thể sử dụng phép nối [] thay cho hàm nổ []
Sử dụng hàm wordwrap[]
Đây thực sự là cách đơn giản nhất để định dạng chuỗi có dấu gạch ngang đều đặn
Hàm wordwrap[] cho phép thêm [các] ký tự vào một chuỗi theo các khoảng thời gian đều đặn sau một độ dài cụ thể như trong ví dụ bên dưới. Trong ví dụ của chúng tôi, chúng tôi sẽ thêm dấu gạch ngang sau mỗi 3 ký tự trong một chuỗi số
đầu ra
123-456-789-123-456-789
Bạn nên truyền 4 đối số cho hàm wordwrap[]. Đầu tiên phải là chuỗi thực, thứ hai là độ dài mà chúng ta muốn thêm [các] ký tự sau, thứ ba là ký tự mà chúng ta muốn chèn vào chuỗi trong khi thứ tư phải được đặt thành true