Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Memotong Tali UTF-8 dengan Selamat dalam PHP Sambil Memelihara Sempadan Perkataan?

Bagaimana untuk Memotong Tali UTF-8 dengan Selamat dalam PHP Sambil Memelihara Sempadan Perkataan?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-18 16:23:11430semak imbas

How to Safely Truncate UTF-8 Strings in PHP While Preserving Word Boundaries?

Memangkas Rentetan dengan Aksara UTF-8

Masalah:
Memangkas rentetan berbilangbait kepada had aksara yang ditentukan sambil mengekalkan sempadan perkataan boleh menjadi cabaran dalam PHP. Isu ini melibatkan pencapaian fungsi ini dengan kaedah tersuai bernama truncate() yang harus berkelakuan konsisten dengan aksara berbilangbait.

Langkah-Langkah untuk Menyelesaikan:

  1. Tentukan maksimum panjang aksara dengan menolak panjang rentetan penamatan daripada maksimum yang dikehendaki panjang.
  2. Pastikan panjang rentetan melebihi panjang maksimum; kembalikannya tidak berubah jika tidak.
  3. Kenal pasti aksara ruang putih terakhir di bawah panjang maksimum untuk mewujudkan sempadan perkataan.
  4. Potong rentetan pada ruang putih terakhir atau panjang maksimum jika tiada ruang putih wujud.
  5. Tambah rentetan penamatan pada rentetan terpenggal.
  6. Kembalikan rentetan yang diubah suai rentetan.

Penyelesaian Menggunakan mb_strimwidth():

PHP menyediakan fungsi mb_strimwidth(), yang boleh mengendalikan pemotongan rentetan berbilangbait. Fungsi ini, bagaimanapun, tidak mematuhi sempadan perkataan. Coretan kod berikut menunjukkan penggunaannya:

public function truncate($string, $chars = 50, $terminator = ' …')
{
    $maxChars = $chars - strlen($terminator);
    if (mb_strlen($string) <= $maxChars) {
        return $string;
    }

    $lastWhitespace = mb_strrpos(mb_substr($string, 0, $maxChars), ' ');
    if ($lastWhitespace !== false) {
        return mb_substr($string, 0, $lastWhitespace) . $terminator;
    } else {
        return mb_substr($string, 0, $maxChars) . $terminator;
    }
}

Atas ialah kandungan terperinci Bagaimana untuk Memotong Tali UTF-8 dengan Selamat dalam PHP Sambil Memelihara Sempadan Perkataan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn