Trong khi phát triển ứng dụng web, trải nghiệm của người dùng luôn là một phần rất quan trọng. Ngoài những đặc điểm cơ bản như thiết kế, tốc độ tải trang, việc quản lý và định dạng dữ liệu cũng là một phần rất quan trọng. Chúng ta thường xuyên phải hiển thị một phần của dữ liệu hoặc giới hạn số ký tự hiển thị của chuỗi văn bản dài trong PHP. Trong bài viết này, chúng ta sẽ cùng nhau tìm hiểu về cách giới hạn ký tự hiển thị trong PHP một cách hiệu quả.

1. Tại sao phải giới hạn ký tự hiển thị?

Trong khi làm việc với dữ liệu đầu vào từ người dùng hoặc dữ liệu từ bên ngoài, với những dữ liệu với độ dài lớn, việc không kiểm soát dữ liệu đầu vào dễ dàng khiến cho trang web bị quá tải hoặc hiển thị không đúng.

Ví dụ, khi chúng ta cần hiển thị danh sách bài viết, chúng ta chỉ nên hiển thị một phần nội dung để vừa giữ giao diện gọn gàng cũng, tạo sự thuận tiện cho người đọc.

2. Sử dụng hàm substr để giới hạn ký tự hiển thị

Trong PHP, chúng ta có thể sử dụng hàm substr để giới hạn số ký tự hiển thị trong một chuỗi.

Cú pháp: substr($string, $startIndex, $limit)

  • $string: Chuỗi ban đầu
  • $startIndex: Vị trí bắt đầu
  • $limit: Số lượng ký tự hiển thị

Ví dụ:

<?php
$str = "StringeeX - Tổng đài chăm sóc và quản lý khách hàng";
$limit = 35;

echo substr($str, 0, $limit) . "...";
// Kết quả: StringeeX - Tổng đài chăm sóc...
?>

Xem thêm bài viết về ngôn ngữ lập trình PHP:

- Giới thiệu về preg_match_all trong PHP

- Tìm hiểu về hàm date trong PHP

- Các hàm thông dụng để làm việc với chuỗi trong PHP

3. Xử lý ký tự đặc biệt và từ nguyên

Tuy với những lợi ích của việc giới hạn số ký tự hiển thị trong PHP, nhưng giới hạn ký tự cũng có rất nhiều vấn đề là việc cắt ngang giữa một từ hoặc ký tự đặc biệt, việc này khiến cho văn bản khó đọc hoặc mất ý nghĩa. Trong PHP cũng có những hàm hỗ trợ để giải quyết vấn đề này đó là kết hợp hàm mb_substr và hàm mb_strpos để có thể đảm bảo rằng việc cắt chuỗi chỉ xảy ra sau một từ hoặc ký tự đặc biệt.

<?php
function stringCut($text, $limit) {
    if (mb_strlen($text) <= $limit) {
        return $text;
    }
    
    $stringCut = mb_substr($text, 0, $limit);
    $lastSpacePos = mb_strrpos($stringCut, " "); // Tìm vị trí khoảng trắng gần nhất
    
    if ($lastSpacePos === false) {
        return $stringCut . "...";
    }
    
    return mb_substr($stringCut, 0, $lastSpacePos) . "...";
}

$text = "Kỷ nguyên chuyển đổi số mở ra cũng là lúc hoạt động Marketing dịch chuyển và đòi hỏi những công cụ Digital Marketing";
$limit = 50;

$stringCut = stringCut($text, $limit);

echo $stringCut;
// Kết quả: Kỷ nguyên chuyển đổi số mở ra cũng là lúc hoạt...
?>

4. Chức năng read more

Đầu tiên chúng ta chuẩn bị một file connect.php với nột dung như sau

<?php
// Thông tin kết nối đến cơ sở dữ liệu
$hostname= "localhost"; // Địa chỉ máy chủ MySQL
$username = "username"; // Tên đăng nhập MySQL
$password = "password"; // Mật khẩu MySQL
$database = "database_name"; // Tên cơ sở dữ liệu

// Tạo kết nối
$conn = new mysqli($hostname, $username, $password, $database);

// Kiểm tra kết nối
if ($conn->connect_error) {
    die("Kết nối thất bại: " . $conn->connect_error);
}

echo "Kết nối thành công";

// Đóng kết nối sau khi hoàn thành
$conn->close();
?>

Trong file index.php chúng ta thực hiện hiển thị dữ liệu danh sách bài viết có trong database:

<?php
require "detail.php";
require "connect.php";

$query = mysqli_query($conn, "SELECT title, description, slug FROM dh_posts");	
            
while($record= mysqli_fetch_assoc($query)) {
    $readmore = '<a href="functions.php?id='.$record['id'].'"><br/>Đọc thêm...</a>';

    echo "<div>";
    echo "<p><a href='" . $record['slug '] . "'>" . $record['title'] . "</a></p><br/>";
    echo "<p>" . substr($record['description'], 0 , 150) . $readmore . "</p><br/>";
    echo "</div>";
}
?>

Tổng kết

Trong bài viết này, chúng ta đã tìm hiểu cách giới hạn ký tự hiển thị trong PHP bằng cách sử dụng hàm substr và cách xử lý đặc biệt cho các từ và ký tự. Việc quản lý độ dài và định dạng dữ liệu là một phần quan trọng của việc phát triển ứng dụng web để đảm bảo trải nghiệm người dùng tốt nhất. Hy vọng với cách xử lý chuỗi trong PHP này có thể giúp mọi người trong việc phát triển ứng dụng web tốt hơn.


Stringee Communication APIs là giải pháp cung cấp các tính năng giao tiếp như gọi thoại, gọi video, tin nhắn chat, SMS hay tổng đài CSKH cho phép tích hợp trực tiếp vào ứng dụng/website của doanh nghiệp nhanh chóng. Nhờ đó giúp tiết kiệm đến 80% thời gian và chi phí cho doanh nghiệp bởi thông thường nếu tự phát triển các tính năng này có thể mất từ 1 - 3 năm.

Bộ API giao tiếp của Stringee hiện đang được tin dùng bởi các doanh nghiệp ở mọi quy mô, lĩnh vực ngành nghề như TPBank, VOVBacsi24, VNDirect, Shinhan Finance, Ahamove, Logivan, Homedy,  Adavigo, bTaskee…

Quý bạn đọc quan tâm xin mời đăng ký NHẬN TƯ VẤN TẠI ĐÂY: