PHP: Tagliate u vostru estrettu à a parolla aduprendu strrpos

codice html

Se state travagliendu cù PHP è vulete mostrà solu un estrattu da u vostru testu di origine è tagliallu à parechji caratteri, u vostru estrattu pò sembrà bruttu se hè fattu à mezu string. Aviu avutu per scrive una funzione per fà questu in ASP è in ASP.NET chì basalmente hà ciclatu da l'ultimu caratteru in daretu per truvà l'ultimu spaziu è tagliatu quì. Tipu di bruttu è un pocu di overkill. Pudete vede veramente questu in azzione nantu à a mo casa pagina induve furnisce solu i primi 500 caratteri.

Eru pienu preparatu per sviluppà a listessa funzione cù PHP oghje ma aghju trovu (cum'è di solitu) chì PHP avia una funzione chì a faci dighjà, strrpos.

U vechju còdice piglierà una catena ($ content) da u primu caratteru à u numeru massimu di caratteri chì vulete ($ maxchars):

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

U novu codice:

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

Cusì u novu codice taglia prima u cuntenutu à u limitu di caratteri chì cercate. Tuttavia, u prossimu passu hè di circà l'ultimu spaziu ("") in u cuntenutu. $ pos finiscerà per esse quella pusizione. Avà, mi assicuru solu chì in realtà ci hè un spaziu in u cuntenutu dumandendu se $ pos> 0. S'ellu ùn ci hè, taglierà solu u cuntenutu à u numeru di caratteri chì aghju dumandatu. Se ci hè un spaziu, hà da taglià cù grazia u mo cuntenutu à u spaziu.

Questu hè un bellu modu di aduprà a cumminazione di u numeru massimu di caratteri è di tagliallu à a parolla. Spergu chì ti piace!

È sò sicuru chì scupreraghju s'ellu ci hè una funzione ASP.NET chì face questu ... Ùn puderia micca truvà una.

7 Comments

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

    Se $ cuntenutu hè inizialmente PIÙ SHORTER di $ maxchars u codice cum'è scrittu pare sempre di diritta à manca per un spaziu è tagliate l'ultima parola. Pudete cuncatenà un spaziu à a fine di $ content, o fà un if (strlen () ...)

  5. 5

    Questu pareva funzionà cum'è una funzione (indirizzendu u cummentariu precedente):

    funzione showexcerpt ($ cuntenutu, $ maxchars) {

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

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

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

    restituisce $ cuntenutu. "...";

    } Altrò {

    ritorni $ contene;

    }

    }

  6. 6

    È se u nostru caratteru finale hè un caratteru di puntuazione cum'è un puntu, puntu d'exclamazione o puntu d'interrogazione? Sfurtunatamente, stu codice hà da asciugà tutta a parolla chì precede u caratteru di puntuazione.  

    Pensu chì serebbe megliu à scrive qualcosa un pocu più robustu.

  7. 7

Chì ne pensi?

Stu situ utilizeghja Akismet per reducisce u puzzicheghju. Sapete ciò chì i dati di i vostri dati è processatu.