PHP: Tranĉu vian ekstrakton ĉe la vorto per strrpos

html-kodo

Se vi laboras kun PHP kaj vi volas montri nur eltiraĵon de via fontteksto kaj fortranĉi ĝin per kelkaj signoj, via eltiraĵo povas aspekti malbela se ĝi estas farita meze. Mi devis skribi funkcion por fari tion en ASP kaj en ASP.NET, kiu esence biciklis de la lasta signo reen por trovi la lastan spacon kaj fortranĉi ĝin tie. Iom aĉa kaj iomete troigita. Vi efektive povas vidi ĉi tion en mia hejmo paĝo kie mi nur provizas la unuajn 500 signojn.

Mi estis tute preta disvolvi la saman funkcion kun PHP hodiaŭ sed trovis (kiel kutime), ke PHP havas funkcion, kiu faras ĝin jam, strrpos.

La malnova kodo prenos subĉenon ($ enhavo) de la unua signo ĝis la maksimuma nombro de signoj, kiujn vi volas ($ maxchars):

$ enhavo = substr ($ enhavo, 0, $ makskaroj); eoi $ enhavon;

La nova kodo:

$ enhavo = substr ($ enhavo, 0, $ makskaroj); $ pos = strrpos ($ enhavo, ""); if ($ pos> 0) {$ content = substr ($ content, 0, $ pos); } eoi $ enhavon;

Do la nova kodo unue fortranĉas la enhavon ĉe la serĉata limo de signoj. Tamen la sekva paŝo estas serĉi la lastan spacon ("") en la enhavo. $ pos finos esti tiu pozicio. Nun mi simple certigas, ke efektive estas spaco en la enhavo, demandante, ĉu $ pos> 0. Se ne, ĝi simple fortranĉos la enhavon laŭ la nombro de signoj, kiujn mi petis. Se estas spaco, ĝi gracie fortranĉos mian enhavon ĉe la spaco.

Ĉi tio estas bela maniero uzi la kombinaĵon de la maksimuma nombro de signoj kaj fortranĉi ĝin laŭ la vorto. Mi esperas, ke vi ŝatos!

Kaj mi certas, ke mi ekscios, ĉu ekzistas ASP.NET-funkcio, kiu faras ĉi tion ... Mi ne povis trovi unu.

7 Komentoj

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

    Se $ enhavo estas komence pli MALPLIKA ol $ maxchars la kodo skribita ankoraŭ aspektos dekstre maldekstren por spaco kaj eltranĉos la lastan vorton. Vi povas aŭ interligi spacon fine de $ content, aŭ fari if (strlen () ...)

  5. 5

    Ĉi tio ŝajnis funkcii kiel funkcio (traktante la antaŭan komenton):

    funkcio showexcerpt ($ enhavo, $ makskaroj) {

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

    $ enhavo = substr ($ enhavo, 0, $ makskaroj);
    $ pos = strrpos ($ enhavo, "");

    se ($ pos> 0) {
    $ enhavo = substr ($ enhavo, 0, $ pos);
    }

    redonu $ enhavon. "...";

    } Alie {

    redoni $ enhavon;

    }

    }

  6. 6

    Kio se nia fina signo estas interpunkcia signo kiel punkto, ekkria signo aŭ demandosigno? Bedaŭrinde, ĉi tiu kodo forviŝos la tutan vorton antaŭan al tiu interpunkcia signo.  

    Mi pensas, ke vi pli bone skribus ion iom pli fortikan.

  7. 7

Kion vi pensas?

Ĉi tiu retejo uzas Akismeton por redukti spamon. Lernu, kiel via komento datiĝas.