PHP: Odrežite svoj izvadak na riječ pomoću strrpos

html kod

Ako radite s PHP-om i želite prikazati samo izvadak iz izvornog teksta i odrezati ga na više znakova, vaš izvadak može izgledati ružno ako se radi u sredini niza. Morao sam napisati funkciju da to učinim u ASP-u i u ASP.NET-u koji su se u osnovi prevrtali od zadnjeg znaka da bi pronašli zadnji prostor i tamo ga odsjekli. Nekako gadno i malo pretjerano. To zapravo možete vidjeti na djelu kod moje kuće stranica gdje pružam samo prvih 500 znakova.

Bio sam potpuno spreman razviti istu funkciju s PHP-om danas, ali ustanovio sam (kao i obično) da PHP već ima funkciju koja to već čini, strrpos.

Stari će kôd uzeti podniz ($ sadržaj) od prvog znaka do maksimalnog broja znakova koji želite ($ maxchars):

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

Novi kod:

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

Dakle, novi kod prvo odreže sadržaj na ograničenju broja znakova koje tražite. Međutim, sljedeći je korak traženje posljednjeg razmaka ("") u sadržaju. $ pos će prestati biti takav položaj. Sada jednostavno osiguravam da u sadržaju ima prostora, pitajući je li $ pos> 0. Ako nema, samo će odrezati sadržaj na broj znakova koje sam zatražio. Ako ima prostora, graciozno će odrezati moj sadržaj u prostoru.

Ovo je lijep način korištenja kombinacije maksimalnog broja znakova i presijecanja pri riječi. Nadam se da ti se sviđa!

I siguran sam da ću otkriti postoji li ASP.NET funkcija koja to radi ... Nisam je mogao pronaći.

7 Komentari

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

    Ako je $content u početku KRAĆI od $maxchars, kod kako je napisan i dalje će izgledati zdesna nalijevo za razmak i izrezati posljednju riječ. Možete spojiti razmak na kraju $contenta ili napraviti if (strlen()…)

  5. 5

    Činilo se da ovo funkcionira kao funkcija (obraćajući se na prethodni komentar):

    funkcija showexcerpt($content, $maxchars) {

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

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

    ako ($pos>0) {
    $sadržaj = substr($sadržaj, 0, $poz);
    }

    vrati $content . "...";

    } Else {

    povratak $ sadržaja;

    }

    }

  6. 6

    Što ako je naš konačni znak interpunkcijski znak poput točke, uskličnika ili upitnika? Nažalost, ovaj će kod izbrisati cijelu riječ koja prethodi navedenom interpunkcijskom znaku.  

    Mislim da bi bilo bolje da napišeš nešto malo robusnije.

  7. 7

Što vi mislite?

Ova web stranica koristi Akismet za smanjenje neželjene pošte. Saznajte kako se podaci vašeg komentara obrađuju.