PHP: Prisni fragmentin tuaj te fjala duke përdorur strrpos

kodi HTML

Nëse jeni duke punuar me PHP dhe dëshironi të tregoni vetëm një ekstrakt nga teksti juaj burimor dhe ta prisni atë në një numër personazhesh, ekstrakti juaj mund të duket i shëmtuar nëse është bërë në mes të vargut. Unë kisha për të shkruar një funksion për të bërë këtë në ASP dhe në ASP.NET që në thelb cikël nga karakteri i fundit prapa për të gjetur hapësirën e fundit dhe të prerë atje. Një lloj e keqe dhe pak e mbingarkuar. Ju në fakt mund ta shihni këtë në veprim në shtëpinë time faqe ku unë siguroj vetëm 500 karakteret e para.

Unë isha plotësisht i përgatitur për të zhvilluar të njëjtin funksion me PHP sot, por zbulova (si zakonisht) që PHP kishte një funksion që e bën atë tashmë, strrpos.

Kodi i vjetër do të marrë një nëngrup ($ përmbajtje) nga karakteri i parë në numrin maksimal të karaktereve që dëshironi ($ maxchars):

$ content = substr ($ content, 0, $ maxchars); jehonë e përmbajtjes $;

Kodi i ri:

$ content = substr ($ content, 0, $ maxchars); $ pos = strrpos ($ përmbajtje, ""); nëse ($ pos> 0) {$ përmbajtje = substr ($ përmbajtje, 0, $ pos); } echo $ përmbajtje;

Kështu që kodi i ri së pari ndërpret përmbajtjen në kufirin e karakterit që po kërkoni. Sidoqoftë, hapi tjetër është të kërkoni hapësirën e fundit ("") në përmbajtje. $ pos do të përfundojë duke qenë ai pozicion. Tani, thjesht siguroj që në të vërtetë ka një hapësirë ​​në përmbajtje duke pyetur nëse $ pos> 0. Nëse nuk ka, ajo thjesht do të shkurtojë përmbajtjen në numrin e karaktereve që kam kërkuar. Nëse ka ndonjë hapësirë, ajo do ta shkurtojë me hijeshi përmbajtjen time në hapësirë.

Kjo është një mënyrë e mirë për të përdorur kombinimin e numrit maksimal të karaktereve dhe prerjen e saj në fjalë. Shpresoj se ju pëlqen!

Dhe jam i sigurt që do të zbuloj nëse ekziston një funksion ASP.NET që e bën këtë ... Nuk munda ta gjej.

7 Comments

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

    Nëse $content është fillimisht MË I SHKURTËR se $maxchars, kodi siç është shkruar do të vazhdojë të duket nga e djathta në të majtë për një hapësirë ​​dhe do të presë fjalën e fundit. Ju ose mund të lidhni një hapësirë ​​në fund të $content, ose të bëni një if (strlen()…)

  5. 5

    Kjo dukej se funksiononte si funksion (duke iu drejtuar komentit të mëparshëm):

    funksioni showexcerpt ($content, $maxchars) {

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

    $përmbajtje= substr($përmbajtje, 0, $maxchars);
    $pos = strrpos($përmbajtje, " ");

    nëse ($pos>0) {
    $përmbajtje = substr($përmbajtje, 0, $pos);
    }

    ktheni $përmbajtje . "...";

    } Tjetër {

    kthimi i përmbajtjes $;

    }

    }

  6. 6

    Po sikur personazhi ynë përfundimtar të jetë një karakter pikësimi si një pikë, pikëçuditëse ose pikëpyetje? Fatkeqësisht, ky kod do të fshijë të gjithë fjalën para karakterit të pikësimit të përmendur.  

    Mendoj se do të ishte më mirë të shkruash diçka pak më të fortë.

  7. 7

Çfarë mendoni ju?

Kjo faqe përdor Akismet për të reduktuar spamin. Mësoni se si përpunohet komenti juaj.