PHP: Retalleu el fragment amb la paraula mitjançant strrpos

codi html

Si esteu treballant amb PHP i només voleu mostrar un fragment del text d'origen i tallar-lo en diversos caràcters, el fragment pot semblar lleig si es fa a mitja cadena. Vaig haver d’escriure una funció per fer-ho a ASP i a ASP.NET que bàsicament anava des de l’últim caràcter per trobar l’últim espai i tallar-lo allà. És una cosa desagradable i una mica excessiu. De fet, podeu veure-ho en acció a casa meva pàgina on només proporciono els primers 500 caràcters.

Avui estava totalment preparat per desenvolupar la mateixa funció amb PHP, però vaig trobar (com de costum) que PHP tenia una funció que ja ho fa, strrpos.

El codi antic prendrà una subcadena ($ content) des del primer caràcter fins al nombre màxim de caràcters que vulgueu ($ maxchars):

$ content = substr ($ content, 0, $ maxchars); eco $ content;

El nou codi:

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

Per tant, el nou codi primer talla el contingut al límit de caràcters que busqueu. No obstant això, el següent pas és buscar l'últim espai ("") al contingut. $ pos acabarà sent aquesta posició. Ara, simplement m’asseguro que realment hi ha un espai al contingut preguntant si $ pos> 0. Si no n’hi ha, només tallarà el contingut del nombre de caràcters que he sol·licitat. Si hi ha espai, em tallarà el contingut amb gràcia.

Aquesta és una bona manera d’utilitzar la combinació del màxim nombre de caràcters i tallar-la amb la paraula. Espero que t'agradi!

I estic segur que descobriré si hi ha alguna funció ASP.NET que faci això ... No en vaig trobar cap.

7 Comentaris

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

    Si $ content és inicialment MÉS SHORTER que $ maxchars, el codi tal com s'escriu encara es veurà de dreta a esquerra per trobar un espai i retallarà l'última paraula. Podeu concatenar un espai al final de $ content o fer un if (strlen () ...)

  5. 5

    Això semblava funcionar com una funció (tractant el comentari anterior):

    function showexcerpt ($ content, $ maxchars) {

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

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

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

    retorna $ contingut. "...";

    } Else {

    retornar contingut $;

    }

    }

  6. 6

    Què passa si el nostre caràcter final és un caràcter de puntuació com un punt final, un signe d’exclamació o un interrogant? Malauradament, aquest codi esborrarà tota la paraula anterior a aquest caràcter de puntuació.  

    Crec que seria millor escriure alguna cosa una mica més robust.

  7. 7

Què et sembla?

Aquest lloc utilitza Akismet per reduir el correu no desitjat. Esbrineu com es processa el vostre comentari.