PHP: Potong kutipan Anda di kata menggunakan strrpos

kode html

Jika Anda bekerja dengan PHP dan Anda hanya ingin menampilkan kutipan dari teks sumber Anda dan memotongnya di sejumlah karakter, kutipan Anda bisa terlihat jelek jika dilakukan di tengah-tengah. Saya harus menulis fungsi untuk melakukan ini di ASP dan ASP.NET yang pada dasarnya berputar dari karakter terakhir kembali untuk menemukan ruang terakhir dan memotongnya di sana. Agak jahat dan sedikit berlebihan. Anda benar-benar dapat melihat ini beraksi di rumah saya halaman dimana saya hanya memberikan 500 karakter pertama.

Saya sepenuhnya siap untuk mengembangkan fungsi yang sama dengan PHP hari ini tetapi menemukan (seperti biasa) bahwa PHP memiliki fungsi yang sudah melakukannya, strpos.

Kode lama akan mengambil substring ($ content) dari karakter pertama ke jumlah maksimum karakter yang Anda inginkan ($ maxchars):

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

Kode baru:

$ konten = substr ($ konten, 0, $ maxchars); $ pos = strrpos ($ konten, ""); if ($ pos> 0) {$ content = substr ($ content, 0, $ pos); } echo $ content;

Jadi kode baru pertama-tama memotong konten di batas karakter yang Anda cari. Namun, langkah selanjutnya adalah mencari spasi terakhir ("") di konten. $ pos akan menjadi posisi itu. Sekarang, saya cukup memastikan bahwa sebenarnya ada ruang di konten dengan menanyakan apakah $ pos> 0. Jika tidak ada, itu hanya akan memotong konten sesuai jumlah karakter yang saya minta. Jika ada ruang, itu dengan anggun akan memotong konten saya di ruang tersebut.

Ini adalah cara yang bagus untuk menggunakan kombinasi jumlah karakter maksimum dan memotong kata tersebut. Semoga Anda suka!

Dan saya yakin saya akan mencari tahu apakah ada fungsi ASP.NET yang melakukan ini… Saya tidak dapat menemukannya.

7 Komentar

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

    Jika $ content awalnya SHORTER dari $ maxchars, kode seperti yang tertulis akan tetap terlihat dari kanan ke kiri untuk spasi dan memotong kata terakhir. Anda dapat menggabungkan spasi di akhir $ content, atau melakukan if (strlen ()…)

  5. 5

    Ini sepertinya berfungsi sebagai fungsi (menangani komentar sebelumnya):

    function showexcerpt ($ content, $ maxchars) {

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

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

    if ($ pos> 0) {
    $ konten = substr ($ konten, 0, $ pos);
    }

    mengembalikan $ konten. "…";

    } Else {

    mengembalikan $ konten;

    }

    }

  6. 6

    Bagaimana jika karakter terakhir kita adalah karakter tanda baca seperti tanda titik, tanda seru, atau tanda tanya? Sayangnya, kode ini akan menghapus seluruh kata sebelum karakter tanda baca tersebut.  

    Saya pikir Anda lebih baik menulis sesuatu yang lebih kuat.

  7. 7

Bagaimana menurut Anda?

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.