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 selle 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 lõikab uus kood 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 $content on algselt LÜHEM kui $maxchars, näeb kirjutatud kood tühjaks ikka paremalt vasakule ja lõikab viimase sõna välja. Saate kas siduda tühiku $content lõpus või teha if (strlen()…)

  5. 5

    See näis toimivat funktsioonina (aadressiks eelmine kommentaar):

    function showexcerpt($content, $maxchars) {

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

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

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

    tagasta $sisu . "…";

    } Else {

    tagasi $ sisu;

    }

    }

  6. 6

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

    Ma arvan, et sul on parem kirjutada midagi tugevamat.

  7. 7

Mis sa arvad?

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