Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Memotong Rentetan dalam PHP Semasa Memelihara Sempadan Perkataan?

Bagaimanakah Saya Boleh Memotong Rentetan dalam PHP Semasa Memelihara Sempadan Perkataan?

Barbara Streisand
Lepaskan: 2024-12-10 20:20:11
asal
286 orang telah melayarinya

How Can I Truncate Strings in PHP While Preserving Word Boundaries?

Mengekalkan Integriti Semantik: Memotong Rentetan pada Sempadan Perkataan Terdekat

Apabila berurusan dengan rentetan dalam pengaturcaraan, selalunya perlu memotongnya agar sesuai dengan panjang tertentu. Walau bagaimanapun, memotong aksara secara naif boleh membawa kepada hasil yang janggal atau tidak betul, terutamanya jika pemotongan berlaku pada pertengahan perkataan.

Dalam PHP, kami mempunyai beberapa pilihan untuk memotong rentetan sambil mengekalkan integriti semantik.

Menggunakan Wordwrap dan Substring

Fungsi wordwrap boleh memisahkan rentetan kepada berbilang baris, menghormati sempadan perkataan. Dengan menentukan lebar maksimum, kita boleh membuat pemisah baris pada perkataan terdekat sebelum panjang yang dikehendaki. Coretan kod berikut menunjukkan pendekatan ini:

$string = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";
$desired_width = 200;

$truncated_string = substr($string, 0, strpos(wordwrap($string, $desired_width), "\n"));
Salin selepas log masuk

Kini, $truncated_string mengandungi teks yang diingini, tetapi hanya sehingga akhir perkataan terakhir sebelum aksara ke-200.

Mengendalikan Kes Tepi

Pendekatan ini berfungsi dengan baik, tetapi ia tidak mengendalikan kes di mana rentetan asal lebih pendek daripada yang dikehendaki lebar. Untuk menangani perkara ini, kita boleh membungkus logik dalam pernyataan bersyarat:

if (strlen($string) > $desired_width) {
  $truncated_string = substr($string, 0, strpos(wordwrap($string, $desired_width), "\n"));
}
Salin selepas log masuk

Berurusan dengan Baris Baharu

Isu halus timbul apabila rentetan mengandungi aksara baris baharu sebelum titik pemangkasan yang diingini. Dalam kes sedemikian, fungsi wordwrap boleh mencipta pemisah baris sebelum masanya. Untuk mengatasinya, kita boleh menggunakan pendekatan berasaskan ungkapan biasa yang lebih canggih:

function tokenTruncate($string, $desired_width) {
  $parts = preg_split('/([\s\n\r]+)/u', $string, null, PREG_SPLIT_DELIM_CAPTURE);
  $parts_count = count($parts);

  $length = 0;
  $last_part = 0;
  for (; $last_part < $parts_count; ++$last_part) {
    $length += strlen($parts[$last_part]);
    if ($length > $desired_width) { break; }
  }

  return implode(array_slice($parts, 0, $last_part));
}
Salin selepas log masuk

Fungsi ini berulang pada token perkataan dan berhenti apabila jumlah panjang melebihi lebar yang diingini. Ia kemudian membina semula rentetan yang dipenggal, memastikan ia berakhir pada sempadan perkataan.

Kerumitan Pengujian dan Pengendalian

Ujian unit adalah penting untuk mengesahkan kefungsian kod kami. Kelas ujian PHP PHPUnit yang disediakan menunjukkan kelakuan yang betul bagi fungsi tokenTruncate.

Aksara UTF8 khas seperti 'à' mungkin memerlukan pengendalian tambahan. Ini boleh dicapai dengan menambahkan 'u' pada penghujung ungkapan biasa:

$parts = preg_split('/([\s\n\r]+)/u', $string, null, PREG_SPLIT_DELIM_CAPTURE);
Salin selepas log masuk

Dengan menggunakan teknik ini, kami boleh memotong rentetan dalam PHP dengan yakin, mengekalkan integriti semantiknya dan memastikan hasil yang estetik dan konsisten. .

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memotong Rentetan dalam PHP Semasa Memelihara 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