PHP: Knip je fragment bij het woord af met strrpos

html-code

Als je met PHP werkt en je wilt alleen een fragment uit je brontekst laten zien en het afsnijden op een aantal tekens, dan kan je fragment er lelijk uitzien als het halverwege de reeks is gedaan. Ik moest een functie schrijven om dit te doen in ASP en in ASP.NET die in feite van het laatste teken terug fietste om de laatste spatie te vinden en die daar afsneed. Een beetje smerig en een beetje overdreven. Je kunt dit bij mij thuis in actie zien pagina waar ik alleen de eerste 500 karakters geef.

Ik was volledig voorbereid om vandaag dezelfde functie met PHP te ontwikkelen, maar ontdekte (zoals gewoonlijk) dat PHP een functie had die het al doet, strpos.

De oude code neemt een substring ($ content) vanaf het eerste teken tot het maximale aantal tekens dat je wilt ($ maxchars):

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

De nieuwe code:

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

Dus de nieuwe code snijdt eerst de inhoud af bij de tekenlimiet waarnaar u op zoek bent. De volgende stap is echter om te zoeken naar de laatste spatie ("") in de inhoud. $ pos zal eindigen als die positie. Nu zorg ik ervoor dat er echt een spatie in de inhoud is door te vragen of $ pos> 0. Als dit niet het geval is, wordt de inhoud gewoon afgesneden op het aantal tekens dat ik heb aangevraagd. Als er ruimte is, zal het mijn inhoud gracieus afsnijden in de ruimte.

Dit is een leuke manier om de combinatie van het maximale aantal karakters en het afsnijden bij het woord te gebruiken. Ik hoop dat je het leuk vindt!

En ik weet zeker dat ik erachter zal komen of er een ASP.NET-functie is die dit doet ... Ik kon er geen vinden.

7 reacties

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

    Als $ content aanvankelijk KORTER is dan $ maxchars, zal de code zoals geschreven nog steeds van rechts naar links kijken voor een spatie en het laatste woord eruit knippen. U kunt ofwel een spatie aan het einde van $ content samenvoegen, of een if (strlen ()…)

  5. 5

    Dit leek te werken als een functie (met betrekking tot de vorige opmerking):

    functie showexcerpt ($ content, $ maxchars) {

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

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

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

    retourneer $ content. "...";

    } Else {

    return $ inhoud;

    }

    }

  6. 6

    Wat als ons laatste teken een leesteken is, zoals een punt, uitroepteken of vraagteken? Helaas wist deze code het hele woord dat voorafgaat aan het leesteken.  

    Ik denk dat je beter iets robuuster kunt schrijven.

  7. 7

Wat denk je?

Deze site gebruikt Akismet om spam te verminderen. Ontdek hoe uw reactiegegevens worden verwerkt.