PHP: strrpos yordamida ko'chirma so'zni kesib oling

HTML kodi

Agar siz PHP bilan ishlayotgan bo'lsangiz va siz faqat manba matningizdan bir parcha ko'rsatib, uni bir nechta belgi bilan kesib tashlamoqchi bo'lsangiz, parcha o'rtada bajarilgan bo'lsa, sizning parcha yomon ko'rinishi mumkin. Men buni ASP va ASP.NET-da bajarish uchun funktsiyani yozishim kerak edi, bu asosan oxirgi belgini orqaga qaytarib, oxirgi joyni topib, u erda kesib tashladi. Yoqimli va ozgina ortiqcha narsalar. Siz buni aslida mening uyimda ko'rishingiz mumkin bet bu erda men faqat birinchi 500 ta belgini taqdim etaman.

Men bugungi kunda PHP bilan bir xil funktsiyani ishlab chiqishga to'liq tayyor edim, lekin (odatdagidek) PHP allaqachon bajaradigan funktsiyaga ega ekanligini topdim, strrpos.

Eski kod substringni ($ content) birinchi belgidan kerakli belgilar soniga ($ maxchars) qadar oladi:

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

Yangi kod:

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

Shunday qilib, yangi kod avval tarkibni siz izlayotgan belgilar chegarasida qisqartiradi. Biroq, keyingi qadam tarkibdagi so'nggi bo'shliqni ("") izlashdir. $ pos shu pozitsiyani egallaydi. Endi men $ pos> 0 deb so'rab, tarkibda bo'sh joy mavjudligini ta'minlayman. Agar yo'q bo'lsa, u men so'ragan belgilar soniga qarab tarkibni qisqartiradi. Agar bo'sh joy bo'lsa, u mening tarkibimni bo'shliqda kesib tashlaydi.

Bu maksimal belgilar sonining kombinatsiyasidan foydalanish va uni so'z bilan kesishning yaxshi usuli. Umid qilamanki sizga yoqadi!

Ishonchim komilki, buni bajaradigan ASP.NET funktsiyasi mavjudmi yoki yo'qmi ... topolmadim.

7 Comments

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

    Agar $content dastlab $maxchars dan QISQA bo'lsa, yozilgan kod hali ham bo'sh joy uchun o'ngdan chapga qaraydi va oxirgi so'zni kesib tashlaydi. Siz $content oxiridagi boʻsh joyni birlashtirishingiz yoki if (strlen()…)

  5. 5

    Bu funktsiya sifatida ishlaganga o'xshardi (oldingi sharhga murojaat qilish):

    funktsiya showexcerpt($content, $maxchars) {

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

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

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

    $kontentni qaytaring. "...";

    } Else {

    $ kontentini qaytarish;

    }

    }

  6. 6

    Agar bizning yakuniy xarakterimiz nuqta, undov yoki savol belgisi kabi tinish belgilari bo'lsa-chi? Afsuski, ushbu kod tinish belgilaridan oldingi so'zni butunlay o'chirib tashlaydi.  

    O'ylaymanki, siz biroz ishonchliroq narsa yozsangiz yaxshi bo'lardi.

  7. 7

Siz nima deb o'ylaysiz?

Ushbu sayt spamni kamaytirish uchun Akismet-dan foydalanadi. Fikringiz ma'lumotlarining qanday ishlashini bilib oling.