PHP: Klipptu úr brotinu við orðið með strrpos

HTML kóða

Ef þú ert að vinna með PHP og þú vilt aðeins sýna brot úr frumtextanum þínum og klippa hann af með fjölda stafa, þá getur útdrátturinn þinn litist ljótur ef það er gert í miðstrengnum. Ég þurfti að skrifa aðgerð til að gera þetta í ASP og í ASP.NET sem í grundvallaratriðum hjólaði frá síðasta staf til að finna síðasta rýmið og skera það af þar. Soldið viðbjóðslegt og svolítið of mikið. Þú getur í raun séð þetta í aðgerð heima hjá mér síðu þar sem ég læt aðeins í té fyrstu 500 stafina.

Ég var fullkomlega tilbúinn að þróa sömu aðgerð með PHP í dag en fann (eins og venjulega) að PHP hafði aðgerð sem gerir það nú þegar, strrpos.

Gamli kóðinn mun taka undirstreng ($ content) frá fyrsta stafnum í hámarksfjölda stafa sem þú vilt ($ maxchars):

$ content = substr ($ content, 0, $ maxchars); bergmál $ innihald;

Nýi kóðinn:

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

Svo nýi kóðinn sker fyrst úr innihaldinu við stafatakmörkin sem þú ert að leita að. Næsta skref er hins vegar að leita að síðasta bilinu (““) í innihaldinu. $ pos mun ljúka því að vera sú staða. Nú er ég einfaldlega að tryggja að það sé raunverulega rými í innihaldinu með því að spyrja hvort $ pos> 0. Ef það er ekki mun það bara skera efnið af þeim fjölda stafa sem ég hef beðið um. Ef það er eitthvað pláss, þá mun það skera þokkalega niður innihald mitt við rýmið.

Þetta er fín leið til að nota samsetningu hámarksfjölda stafa og að skera það niður við orðið. Vona að þér líki!

Og ég er viss um að ég mun komast að því hvort það er ASP.NET aðgerð sem gerir þetta ... ég gat ekki fundið það.

7 Comments

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

    Ef $ content er upphaflega STÆRR en $ maxchars mun kóðinn eins og hann er skrifaður samt líta til hægri til vinstri fyrir bil og klippa út síðasta orðið. Þú getur annað hvort sameinað bil í lok $ innihalds, eða gert ef (strlen () ...)

  5. 5

    Þetta virtist virka sem aðgerð (takast á við fyrri athugasemd):

    virka sýnishorn ($ innihald, $ maxchars) {

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

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

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

    skila $ innihaldi. "...";

    } Else {

    skila $ efni;

    }

    }

  6. 6

    Hvað ef lokapersóna okkar er greinarmerki eins og punktur, upphrópunarmerki eða spurningarmerki? Því miður mun þessi kóði þurrka allt orðið á undan nefndum greinarmerki.  

    Ég held að þér væri betra að skrifa eitthvað aðeins öflugra.

  7. 7

Hvað finnst þér?

Þessi síða notar Akismet til að draga úr ruslpósti. Lærðu hvernig ummæli þín eru unnin.