PHP: Potong petikan anda pada kata menggunakan strrpos

kod html

Sekiranya anda bekerja dengan PHP dan anda hanya ingin menunjukkan petikan dari teks sumber anda dan memotongnya dengan sebilangan aksara, petikan anda akan kelihatan jelek jika dilakukan di tengah rentetan. Saya terpaksa menulis fungsi untuk melakukan ini di ASP dan di ASP.NET yang pada dasarnya berpusing dari watak terakhir kembali untuk mencari ruang terakhir dan memotongnya di sana. Jenis jahat dan sedikit berlebihan. Anda sebenarnya dapat melihat perkara ini di rumah saya halaman di mana saya hanya memberikan 500 watak pertama.

Saya sepenuhnya bersedia untuk mengembangkan fungsi yang sama dengan PHP hari ini tetapi mendapati (seperti biasa) bahawa PHP mempunyai fungsi yang sudah melakukannya, strrpos.

Kod lama akan mengambil substring ($ content) dari watak pertama hingga jumlah watak maksimum yang anda mahukan ($ maxchars):

$ content = substr ($ content, 0, $ maxchars); echo $ kandungan;

Kod baru:

$ content = substr ($ content, 0, $ maxchars); $ pos = strrpos ($ kandungan, ""); jika ($ pos> 0) {$ content = substr ($ content, 0, $ pos); } gema kandungan $;

Oleh itu, kod baru memotong kandungan pada had watak yang anda cari. Namun, langkah seterusnya adalah mencari ruang terakhir (”“) dalam kandungan. $ pos akan berakhir menjadi kedudukan itu. Sekarang, saya hanya memastikan bahawa sebenarnya terdapat ruang dalam kandungan dengan bertanya apakah $ pos> 0. Sekiranya tidak ada, ia akan memotong kandungannya dengan jumlah watak yang saya minta. Sekiranya ada ruang, ia akan memotong kandungan saya di ruang tersebut.

Ini adalah kaedah yang baik untuk menggunakan gabungan bilangan maksimum watak dan memotongnya pada perkataan. Harap awak suka!

Dan saya pasti akan mengetahui sama ada terdapat fungsi ASP.NET yang melakukan ini ... Saya tidak dapat menjumpainya.

7 Komen

  1. 1
  2. 2
  3. 3
  4. 4

    Sekiranya kandungan $ pada mulanya lebih pendek daripada $ max, kod seperti yang ditulis masih akan kelihatan dari kanan ke kiri untuk ruang dan memotong perkataan terakhir. Anda boleh menggabungkan ruang di hujung kandungan $, atau melakukan jika (strlen ()…)

  5. 5

    Ini sepertinya berfungsi sebagai fungsi (menangani komentar sebelumnya):

    showexcerpt fungsi ($ kandungan, $ maxchars) {

    jika (strlen ($ content)> $ maxchars) {

    $ content = substr ($ content, 0, $ maxchars);
    $ pos = strrpos ($ kandungan, "");

    jika ($ pos> 0) {
    $ content = substr ($ content, 0, $ pos);
    }

    mengembalikan kandungan $. "…";

    } Lain {

    kembali kandungan $;

    }

    }

  6. 6

    Bagaimana jika watak akhir kita adalah watak tanda baca seperti tanda berhenti, tanda seru atau tanda tanya? Malangnya, kod ini akan menghapus keseluruhan perkataan sebelum watak tanda baca tersebut.  

    Saya rasa anda lebih baik menulis sesuatu yang lebih mantap.

  7. 7

Apa yang anda fikir?

Laman web ini menggunakan Akismet untuk mengurangkan spam. Ketahui bagaimana data komen anda diproses.