PHP: Taglia il tuo estratto alla parola usando strrpos

codice html

Se stai lavorando con PHP e vuoi mostrare solo un estratto dal tuo testo di origine e tagliarlo su un numero di caratteri, il tuo estratto può sembrare brutto se è fatto a metà stringa. Ho dovuto scrivere una funzione per farlo in ASP e in ASP.NET che fondamentalmente andasse in bicicletta dall'ultimo carattere per trovare l'ultimo spazio e tagliarlo lì. Un po 'sgradevole e un po' eccessivo. Puoi effettivamente vederlo in azione a casa mia pagina dove fornisco solo i primi 500 caratteri.

Ero completamente pronto a sviluppare la stessa funzione con PHP oggi, ma ho scoperto (come al solito) che PHP aveva già una funzione che lo fa, strpos.

Il vecchio codice prenderà una sottostringa ($ content) dal primo carattere al numero massimo di caratteri che desideri ($ maxchars):

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

Il nuovo codice:

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

Quindi il nuovo codice taglia prima il contenuto al limite di caratteri che stai cercando. Tuttavia, il passaggio successivo consiste nel cercare l'ultimo spazio ("") nel contenuto. $ pos finirà per essere quella posizione. Ora, mi assicuro semplicemente che ci sia effettivamente uno spazio nel contenuto chiedendo se $ pos> 0. Se non c'è, taglierà semplicemente il contenuto al numero di caratteri che ho richiesto. Se c'è dello spazio, interromperà con grazia il mio contenuto nello spazio.

Questo è un bel modo di usare la combinazione del numero massimo di caratteri e il tagliandolo alla parola. Spero ti piaccia!

E sono sicuro che scoprirò se c'è una funzione ASP.NET che fa questo ... Non sono riuscito a trovarne una.

Commenti

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

    Se $ content è inizialmente PIÙ BREVE di $ maxchars, il codice come scritto apparirà ancora da destra a sinistra per uno spazio e taglierà l'ultima parola. Puoi concatenare uno spazio alla fine di $ content, o eseguire un if (strlen () ...)

  5. 5

    Questo sembrava funzionare come una funzione (affrontando il commento precedente):

    funzione showexcerpt ($ content, $ maxchars) {

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

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

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

    restituire $ contenuto. "...";

    } Else {

    restituire $ content;

    }

    }

  6. 6

    E se il nostro carattere finale fosse un carattere di punteggiatura come un punto, un punto esclamativo o un punto interrogativo? Sfortunatamente, questo codice cancellerà l'intera parola che precede il suddetto carattere di punteggiatura.  

    Penso che faresti meglio a scrivere qualcosa di un po 'più robusto.

  7. 7

Cosa ne pensi?

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati dei tuoi commenti.