PHP: Klip dit uddrag af ordet ved hjælp af strrpos

html kode

Hvis du arbejder med PHP, og du kun vil vise et uddrag fra din kildetekst og afskære det med et antal tegn, kan dit uddrag se grimt ud, hvis det er lavet i midtstrengen. Jeg var nødt til at skrive en funktion for at gøre dette i ASP og i ASP.NET, der grundlæggende cyklede fra det sidste tegn tilbage for at finde det sidste mellemrum og afskære det der. En slags ubehagelig og lidt overkill. Du kan faktisk se dette i aktion på mit hjem side hvor jeg kun giver de første 500 tegn.

Jeg var fuldt forberedt på at udvikle den samme funktion med PHP i dag, men fandt (som normalt), at PHP havde en funktion, der allerede gør det, strrpos.

Den gamle kode tager en understreng ($ indhold) fra det første tegn til det maksimale antal tegn, du ønsker ($ maxchars):

$ indhold = substr ($ indhold, 0, $ maxchars); ekko $ indhold;

Den nye kode:

$ indhold = substr ($ indhold, 0, $ maxchars); $ pos = strrpos ($ indhold, ""); hvis ($ pos> 0) {$ content = substr ($ content, 0, $ pos); } ekko $ indhold;

Så den nye kode afskærer først indholdet ved den tegnbegrænsning, du leder efter. Det næste trin er dog at lede efter det sidste mellemrum (”“) i indholdet. $ pos vil ende med at være den position. Nu sørger jeg simpelthen for, at der faktisk er plads i indholdet ved at spørge, om $ pos> 0. Hvis der ikke er det, vil det bare afskære indholdet med det antal tegn, jeg har anmodet om. Hvis der er plads, vil det yndefuldt afskære mit indhold på rummet.

Dette er en god måde at bruge kombinationen af ​​det maksimale antal tegn på og afskære det ved ordet. Håber du kan lide!

Og jeg er sikker på, at jeg finder ud af, om der er en ASP.NET-funktion, der gør dette ... Jeg kunne ikke finde en.

7 Kommentarer

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

    Hvis $ indhold oprindeligt er KORTERE end $ maxchars, vil koden som skrevet stadig se højre mod venstre for et mellemrum og skære det sidste ord ud. Du kan enten sammenkæde et mellemrum i slutningen af ​​$ indhold eller lave en if (strlen () ...)

  5. 5

    Dette syntes at fungere som en funktion (adressering af den foregående kommentar):

    funktion showexcerpt ($ indhold, $ maxchars) {

    hvis (strlen ($ indhold)> $ maxchars) {

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

    hvis ($ pos> 0) {
    $ indhold = substr ($ indhold, 0, $ pos);
    }

    returnere $ indhold. "...";

    } Else {

    returnere $ indhold

    }

    }

  6. 6

    Hvad hvis vores sidste karakter er en tegnsætningstegn som et full-stop, udråbstegn eller spørgsmålstegn? Desværre vil denne kode slette hele ordet forud for nævnte tegnsætningstegn.  

    Jeg tror, ​​det er bedre for dig at skrive noget lidt mere robust.

  7. 7

Hvad mener du?

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.