PHP: Lõigake oma väljavõte sõna abil, kasutades strrpos

HTML-kood

Kui töötate PHP-ga ja soovite näidata ainult väljavõtet oma algtekstist ja lõigata see mitme tähemärgiga ära, võib teie väljavõte kole välja näha, kui see on tehtud stringide keskel. Pidin selleks ASP-s ja ASP.NETis kirjutama funktsiooni, mis põhiliselt sõitis viimasest tähemärgist tagasi, et leida viimane tühik ja lõigata see seal ära. Omamoodi vastik ja natuke liigne. Seda näete tegelikult minu kodus lehekülg kus esitan ainult esimesed 500 tähemärki.

Ma olin täna täielikult valmis PHP-ga sama funktsiooni välja töötama, kuid leidsin (nagu tavaliselt), et PHP-l oli funktsioon, mis seda juba teeb, strrpos.

Vana kood viib alamstringi ($ content) esimesest tähemärgist maksimaalse soovitud tähemärgini ($ maxchars):

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

Uus kood:

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

Nii et uus kood lõikab esmalt sisu otsitava tähemärgipiirangu juures. Järgmine samm on siiski sisult viimase tühiku (““) otsimine. $ pos lõpetab selle positsiooni. Nüüd lihtsalt tagan, et sisus on tegelikult tühik, küsides, kas $ pos> 0. Kui seda pole, lõikab see sisu lihtsalt minu soovitud tähemärkide arvuga. Kui ruumi on, lõikab see minu sisu graatsiliselt selle koha pealt ära.

See on kena viis kasutada maksimaalse tähemärkide arvu kombinatsiooni ja selle ära lõigata sõna juures. Loodan et sulle meeldib!

Ja olen kindel, et saan teada, kas on olemas ASP.NET-i funktsioon, mis seda teeb ... Ma ei leidnud seda.

7 Kommentaarid

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

    Kui algselt on $ content lühem kui $ maxchars, näeb kirjutatud kood ikkagi tühiku jaoks paremalt vasakule ja lõikab viimase sõna välja. Võite kas liita tühiku $ sisu lõpus või teha if (strlen ()…)

  5. 5

    Tundus, et see toimis funktsioonina (käsitledes eelmist kommentaari):

    funktsioon showexcerpt ($ content, $ maxchars) {

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

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

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

    tagastage $ sisu. "...";

    } Else {

    tagasi $ sisu;

    }

    }

  6. 6

    Mis siis, kui meie viimane märk on kirjavahemärk, nagu punkt, hüüumärk või küsimärk? Kahjuks pühib see kood kogu kirjavahemärgile eelneva sõna.  

    Ma arvan, et parem oleks kirjutada midagi natuke jõulisemat.

  7. 7

Mis sa arvad?

Sellel saidil kasutatakse rämpsposti vähendamiseks Akismetit. Vaadake, kuidas teie andmeid töödeldakse.