Quay lại

Che đậy một phần của chuỗi trong Laravel Chuyên mục PHP và Laravel    2023-11-16    8 Lượt xem    7 Lượt thích    comment-3 Created with Sketch Beta. 0 Bình luận

Che đậy một phần của chuỗi trong Laravel

Có lúc bạn cần che đậy một phần cụ thể của chuỗi. Ví dụ, để che đậy các chữ số trên thẻ tín dụng ngoại trừ bốn chữ số cuối cùng, hoặc để che đậy các phần cụ thể của số điện thoại hoặc email.

Cách tốt nhất để che đậy là thay thế phần cụ thể của chuỗi bằng dấu sao.

Trong phiên bản mới nhất của Laravel 8.x, một phương thức được thêm vào framework có tên là mask() cho phép bạn làm điều đó.

Vì vậy, theo thông báo PR, phương thức mask() này cho phép bạn che đậy một phần của chuỗi với một ký tự lặp lại như sau.

use Illuminate\Support\Str;

echo Str::mask('1234567891234567', '*', 0, 12);

// ************4567

Str::mask('my-private@email.com', '*', 3);

// my******************

Như bạn có thể thấy, phương thức mask() chấp nhận chuỗi cần được che đậy làm tham số đầu tiên, ký tự mà bạn muốn sử dụng để che đậy nó làm tham số thứ hai, và các tham số còn lại cho phép bạn xác định phần của chuỗi cần được che đậy.

Phương thức cũng chấp nhận một số tham số khác ngoài những gì mình đã đề cập ở trên. Dưới đây là cách signature của phương thức trông như thế nào.

/**
 * Masks a portion of a string with a repeated character.
 *
 * @param  string  $string
 * @param  string  $character
 * @param  int  $index
 * @param  int|null  $length
 * @param  string  $encoding
 * @return string
 */
public static function mask(
    $string, 
    $character, 
    $index, 
    $length = null, 
    $encoding = 'UTF-8'
)

Vì vậy, bằng cách điều chỉnh các tham số $index$length, bạn thậm chí có thể sử dụng một chỉ số âm với một độ dài tùy chỉnh như sau.

echo Str::mask('+56 9 87654321', '*', -8, 6);

// + 56 9 ******21

Dưới đây là một số ví dụ khác về cách sử dụng phương thức cho các trường hợp sử dụng khác nhau mà tôi lấy từ các bài kiểm thử của phương thức.

echo Str::mask('taylor@email.com', '*', -13);

// tay*************

echo Str::mask('taylor@email.com', '*', 16);

// taylor@email.com

echo Str::mask('taylor@email.com', '*', -99, 5);

// *****r@email.com

Bình luận (0)

Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough

Bài viết liên quan

Learning English Everyday