PHP: Odsek pri besedi odrežite s strrpos

html koda

Če delate s PHP in želite prikazati samo odlomek iz izvornega besedila in ga odrezati na več znakov, je lahko vaš odlomek videti grd, če je narejen sredi niza. Za to sem moral napisati funkcijo v ASP in ASP.NET, ki se je v bistvu vrtela od zadnjega znaka nazaj, da je našla zadnji prostor in ga tam odrezala. Nekako grdo in malo preveč. To lahko dejansko vidite na mojem domu Stran kjer navedem le prvih 500 znakov.

Danes sem bil popolnoma pripravljen razviti isto funkcijo s PHP, vendar sem (kot običajno) ugotovil, da je PHP že imel funkcijo, ki to že počne, strrpos.

Stara koda bo prevzela podniz ($ content) od prvega znaka do največjega števila želenih znakov ($ maxchars):

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

Nova koda:

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

Nova koda torej najprej odreže vsebino do omejitve znakov, ki jo iščete. Naslednji korak pa je poiskati zadnji presledek ("") v vsebini. $ pos se bo končal kot ta položaj. Zdaj preprosto zagotovim, da je v vsebini prostor, tako da vprašam, ali je $ pos> 0. Če ni, bo vsebino preprosto odrezal na število znakov, ki sem jih zahteval. Če je prostor, bo elegantno odrezal mojo vsebino v prostoru.

To je lep način uporabe kombinacije največjega števila znakov in izreza pri besedi. Upam, da ti je všeč!

In prepričan sem, da bom ugotovil, ali to počne funkcija ASP.NET ... Nisem je mogel najti.

7 Komentarji

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

    Če je $ vsebina sprva KRAJŠA od $ maxchars, bo napisana koda še vedno videti presledek in izrezala zadnjo besedo. Lahko spajate presledek na koncu vsebine $ ali pa naredite if (strlen () ...)

  5. 5

    Zdi se, da to deluje kot funkcija (naslavljanje prejšnjega komentarja):

    funkcija showexcerpt ($ vsebina, $ maxchars) {

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

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

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

    vrni $ vsebino. "...";

    } Else {

    vrne $ vsebino;

    }

    }

  6. 6

    Kaj pa, če je naš zadnji znak ločila, kot so pika, klicaj ali vprašaj? Ta koda bo na žalost izbrisala celotno besedo pred omenjenim ločilom.  

    Mislim, da bi bilo bolje, če bi napisali nekaj malo bolj trdnega.

  7. 7

Kaj menite?

Ta stran uporablja Akismet za zmanjšanje nezaželene pošte. Preberite, kako se vaš komentar obravnava.