PHP: Odrežite svoj odlomak na riječ koristeći strrpos

html kod

Ako radite s PHP-om i želite prikazati samo odlomak iz izvornog teksta i odrezati ga na više znakova, vaš odlomak 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 koja se u osnovi okretala od zadnjeg znaka natrag da 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 Strana 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ć radi, 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 ($ sadržaj, 0, $ pos); } echo $ content;

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

Ovo je lijep način korištenja kombinacije maksimalnog broja znakova i odsijecanja pri riječi. Nadam se da volite!

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 kako 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 ($ sadržaj)> $ maxchars) {

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

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

    vrati $ sadržaj. "...";

    } Else {

    povratni $ sadržaj;

    }

    }

  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

Šta ti misliš?

Ova stranica koristi Akismet kako bi smanjila neželjenu poštu. Saznajte kako se podaci vašeg komentara obrađuju.