PHP: Leikkaa ote sanasta strrposilla

html-koodi

Jos työskentelet PHP: n kanssa ja haluat näyttää vain otteen lähdetekstistäsi ja leikata sen pois useilla merkeillä, ote voi näyttää rumalta, jos se tehdään merkkijonon puolivälissä. Minun piti kirjoittaa funktio tehdäksesi tämä ASP: ssä ja ASP.NET: ssä, joka periaatteessa pyöräili viimeisestä merkistä takaisin löytääksesi viimeisen tilan ja leikkaamalla sen siellä. Eräänlainen ikävä ja hieman ylenmääräinen. Voit todella nähdä tämän toiminnassa kotoni sivulla missä annan vain ensimmäiset 500 merkkiä.

Olin täysin valmis kehittämään saman toiminnon PHP: n kanssa tänään, mutta huomasin (kuten tavallista), että PHP: llä oli toiminto, joka tekee sen jo, strrpos.

Vanha koodi vie alimerkkijonon ($ content) ensimmäisestä merkistä haluamaasi merkkien enimmäismäärään ($ maxchars):

$ content = substr ($ content, 0, $ maxchars); echo $ -sisältö;

Uusi koodi:

$ content = substr ($ content, 0, $ maxchars); $ pos = strrpos ($ content, ""); if ($ pos> 0) {$ content = substr ($ content, 0, $ pos); } echo $ -sisältö;

Joten uusi koodi katkaisee ensin sisällön etsimälläsi merkkirajalla. Seuraava askel on kuitenkin etsiä sisällön viimeistä tilaa (”“). $ pos päättyy olemaan tämä asema. Nyt yksinkertaisesti varmistan, että sisällössä on todella tilaa kysymällä, onko $ pos> 0. Jos sitä ei ole, se vain leikkaa sisällön pyytämieni merkkien määrällä. Jos on tilaa, se leikkaa sisällön sulavasti tilaan.

Tämä on mukava tapa käyttää merkkien enimmäismäärän yhdistelmää ja leikata se sanasta. Toivottavasti pidät!

Ja olen varma, että saan selville, onko ASP.NET-toiminto, joka tekee tämän ... En löytänyt sitä.

7 Kommentit

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

    Jos $ content on aluksi SHORTER kuin $ maxchars, kirjoitettu koodi näyttää silti tilaa oikealta vasemmalle ja leikkaa viimeisen sanan. Voit joko liittää välilyönnin $-sisällön loppuun tai tehdä if-arvon (strlen ()…)

  5. 5

    Tämä näytti toimivan funktiona (edellisessä kommentissa):

    function showexcerpt ($ content, $ maxchars) {

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

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

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

    palauta $ sisältöä. "…";

    } Else {

    palaa $ sisältö;

    }

    }

  6. 6

    Entä jos viimeinen merkkimme on välimerkki, kuten piste, huutomerkki tai kysymysmerkki? Valitettavasti tämä koodi pyyhkii koko sanaa edeltävän välimerkin.  

    Mielestäni sinun on parempi kirjoittaa jotain hieman vankempaa.

  7. 7

Mitä mieltä olet?

Tämä sivusto käyttää Akismetiä roskapostin vähentämiseksi. Lue, miten kommenttitietosi käsitellään.