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 sredinom niza. Morao sam napisati funkciju da to učinim u ASP-u i u ASP.NET-u koja se u osnovi preslikala od zadnjeg znaka natrag kako bi pronašla zadnji prostor i tamo ga odsjekla. 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 zaista 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 $ sadržaj inicijalno KRATIJI od $ maxchars, kôd kao što je napisan i dalje će izgledati desno i lijevo za razmak i izrezati zadnju riječ. Možete spojiti razmak na kraju $ sadržaja ili napraviti if (strlen () ...)

  5. 5

    Čini se da ovo funkcionira kao funkcija (obraćajući se prethodnom komentaru):

    funkcija showexcerpt ($ sadržaj, $ maxchars) {

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

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

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

    vratiti $ sadržaj. "...";

    } 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 kôd izbrisati cijelu riječ koja prethodi spomenutom 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.