Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Memotong Rentetan Berbilang Bait Dengan Tepat Semasa Mengekalkan Sempadan Perkataan?

Bagaimanakah Saya Boleh Memotong Rentetan Berbilang Bait Dengan Tepat Semasa Mengekalkan Sempadan Perkataan?

Linda Hamilton
Lepaskan: 2024-12-07 15:01:15
asal
647 orang telah melayarinya

How Can I Precisely Truncate Multibyte Strings While Maintaining Word Boundaries?

Memangkas Rentetan Berbilangbait dengan Ketepatan

Pengenalan

Memotong rentetan kepada panjang aksara tertentu ialah tugas biasa dalam pengaturcaraan. Walau bagaimanapun, apabila berurusan dengan rentetan multibait, yang mungkin mengandungi aksara dengan lebar yang berbeza-beza, ia menjadi lebih kompleks. Soalan ini menyelidiki nuansa memotong rentetan berbilangbait sambil mengekalkan sempadan perkataan.

Fungsi mb_strimwidth PHP

Seperti yang dicadangkan oleh jawapannya, PHP menyediakan fungsi yang mudah dipanggil mb_strimwidth( ) yang mengendalikan pemotongan rentetan berbilangbait. Ia memerlukan rentetan, lebar yang dikehendaki dan penamat pilihan sebagai hujah. Walau bagaimanapun, fungsi ini tidak mengambil kira sempadan perkataan.

Algoritma Pemangkasan Tersuai

Untuk mencapai pemangkasan sempadan perkataan, algoritma tersuai boleh digunakan:

function truncate($string, $chars = 50, $terminator = ' …') {
    // Calculate the maximum length considering the terminator
    $max_length = $chars - mb_strlen($terminator);

    // Short circuit for strings shorter than the maximum length
    if (mb_strlen($string) <= $max_length) {
        return $string;
    }

    // Find the last space character within the maximum length
    $last_space_index = mb_strrpos($string, ' ', $max_length);

    // Cut the string at the last space or at the maximum length if no last space is found
    $truncated_string = (false !== $last_space_index)
        ? mb_substr($string, 0, $last_space_index)
        : mb_strimwidth($string, 0, $chars);

    // Append the terminator
    $truncated_string .= $terminator;

    return $truncated_string;
}
Salin selepas log masuk

Fungsi ini melaksanakan langkah-langkah yang diterangkan dalam soalan:

  1. Kira panjang maksimum.
  2. Sahkan jika rentetan lebih panjang daripada panjang maksimum.
  3. Cari aksara ruang terakhir di bawah panjang maksimum.
  4. Potong rentetan dengan sewajarnya.
  5. Tambahkan terminator.
  6. Kembalikan rentetan terpenggal.

Demonstrasi

Kod berikut menunjukkan penggunaan pemangkasan tersuai fungsi:

$in = "Answer to the Ultimate Question of Life, the Universe, and Everything.";
$out = truncate($in, 50, ' …');

echo $out; // "Answer to the Ultimate Question of Life, the …"
Salin selepas log masuk

Kesimpulan

Fungsi mb_strimwidth() PHP menyediakan cara yang mudah untuk memotong rentetan berbilangbait, tetapi ia tidak mengambil kira sempadan perkataan. Dengan melaksanakan algoritma tersuai, kami boleh mencapai pemangkasan yang lebih tepat yang memelihara integriti sempadan perkataan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memotong Rentetan Berbilang Bait Dengan Tepat Semasa Mengekalkan Sempadan Perkataan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan